From ef14736aca81671852c22bac9f947d3603339089 Mon Sep 17 00:00:00 2001 From: muXxer Date: Tue, 7 May 2024 16:56:11 +0200 Subject: [PATCH] Fix peer multiaddresses and visualizer (#101) --- node-dashboard | 2 +- pkg/dashboard/frontend/asset-manifest.json | 12 ++++++------ pkg/dashboard/frontend/index.html | 2 +- .../css/{main.37fcc5fd.css => main.077f73c0.css} | 4 ++-- .../frontend/static/css/main.077f73c0.css.map | 1 + .../frontend/static/css/main.37fcc5fd.css.map | 1 - .../frontend/static/js/main.9a94a724.js.map | 1 - .../static/js/{main.9a94a724.js => main.a913c086.js} | 6 +++--- ...4.js.LICENSE.txt => main.a913c086.js.LICENSE.txt} | 0 .../frontend/static/js/main.a913c086.js.map | 1 + 10 files changed, 15 insertions(+), 15 deletions(-) rename pkg/dashboard/frontend/static/css/{main.37fcc5fd.css => main.077f73c0.css} (98%) create mode 100644 pkg/dashboard/frontend/static/css/main.077f73c0.css.map delete mode 100644 pkg/dashboard/frontend/static/css/main.37fcc5fd.css.map delete mode 100644 pkg/dashboard/frontend/static/js/main.9a94a724.js.map rename pkg/dashboard/frontend/static/js/{main.9a94a724.js => main.a913c086.js} (84%) rename pkg/dashboard/frontend/static/js/{main.9a94a724.js.LICENSE.txt => main.a913c086.js.LICENSE.txt} (100%) create mode 100644 pkg/dashboard/frontend/static/js/main.a913c086.js.map diff --git a/node-dashboard b/node-dashboard index 6d0f6b2..964969e 160000 --- a/node-dashboard +++ b/node-dashboard @@ -1 +1 @@ -Subproject commit 6d0f6b2cea67ec2c5a054ae759a6d28596f6b8e9 +Subproject commit 964969e5d4a7c8af6dc6d17f1ee110b716a2cb28 diff --git a/pkg/dashboard/frontend/asset-manifest.json b/pkg/dashboard/frontend/asset-manifest.json index d4862ca..9866b42 100644 --- a/pkg/dashboard/frontend/asset-manifest.json +++ b/pkg/dashboard/frontend/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { - "main.css": "/dashboard/static/css/main.37fcc5fd.css", - "main.js": "/dashboard/static/js/main.9a94a724.js", + "main.css": "/dashboard/static/css/main.077f73c0.css", + "main.js": "/dashboard/static/js/main.a913c086.js", "static/js/751.7b6352ab.chunk.js": "/dashboard/static/js/751.7b6352ab.chunk.js", "static/js/626.a6cf14e7.chunk.js": "/dashboard/static/js/626.a6cf14e7.chunk.js", "static/js/733.93bd158b.chunk.js": "/dashboard/static/js/733.93bd158b.chunk.js", @@ -53,11 +53,11 @@ "static/media/play.svg": "/dashboard/static/media/play.0cc752a2907c29ea69983a2ce4c35c3d.svg", "static/media/health-bad.svg": "/dashboard/static/media/health-bad.f6b3a99f588b20aef147dd8cada3356f.svg", "static/media/health-good.svg": "/dashboard/static/media/health-good.c06d31b2b699112b161f07c13711dc20.svg", - "main.37fcc5fd.css.map": "/dashboard/static/css/main.37fcc5fd.css.map", - "main.9a94a724.js.map": "/dashboard/static/js/main.9a94a724.js.map" + "main.077f73c0.css.map": "/dashboard/static/css/main.077f73c0.css.map", + "main.a913c086.js.map": "/dashboard/static/js/main.a913c086.js.map" }, "entrypoints": [ - "static/css/main.37fcc5fd.css", - "static/js/main.9a94a724.js" + "static/css/main.077f73c0.css", + "static/js/main.a913c086.js" ] } \ No newline at end of file diff --git a/pkg/dashboard/frontend/index.html b/pkg/dashboard/frontend/index.html index 4827175..3487beb 100644 --- a/pkg/dashboard/frontend/index.html +++ b/pkg/dashboard/frontend/index.html @@ -1 +1 @@ -Node Dashboard
\ No newline at end of file +Node Dashboard
\ No newline at end of file diff --git a/pkg/dashboard/frontend/static/css/main.37fcc5fd.css b/pkg/dashboard/frontend/static/css/main.077f73c0.css similarity index 98% rename from pkg/dashboard/frontend/static/css/main.37fcc5fd.css rename to pkg/dashboard/frontend/static/css/main.077f73c0.css index 48ffa1e..e269b42 100644 --- a/pkg/dashboard/frontend/static/css/main.37fcc5fd.css +++ b/pkg/dashboard/frontend/static/css/main.077f73c0.css @@ -1,2 +1,2 @@ -.app{align-items:stretch;display:flex;flex:1 1;flex-direction:row;min-width:320px;overflow:hidden}.app .scroll-content{overflow:auto}@media(max-width:768px){.app .health-indicators{padding:16px 20px}}@media(max-width:480px){.app .health-indicators{padding:16px 20px 16px 66px}}.header{align-items:center;background-color:var(--panel-background);display:flex;height:80px;justify-content:center;padding:16px}@media(max-width:768px){.header{height:60px;justify-content:flex-start;padding-left:0}}@media(max-width:480px){.header{padding-left:16px}}.header .content{display:flex;flex:1 1;flex-direction:row;max-width:1080px}.header .content .child{border-right:1px solid var(--panel-border);padding:10px 24px}@media(max-width:1024px){.header .content .child{padding:10px}}.header .content .child.child-fill{flex:1 1;min-width:250px;padding-right:40px}@media(max-width:768px){.header .content .child.child-fill{min-width:0;min-width:auto;padding-right:0}}.health-indicator{align-items:center;display:flex}.health-indicator .label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-left:16px;text-transform:uppercase}.micro-graph{display:flex;flex-direction:column;justify-content:flex-start;width:130px}.micro-graph .label{color:var(--text-color-secondary);font-size:10px;font-size:.625rem;font-weight:500}.micro-graph .label,.micro-graph .value{font-family:DM Sans,sans-serif;text-transform:uppercase;white-space:nowrap}.micro-graph .value{color:var(--text-color-primary);font-size:16px;font-size:1rem;font-weight:700}.micro-graph .canvas{color:var(--accent-primary)}.micro-graph .canvas svg{overflow:visible}.nav-menu{align-items:center;display:flex}.nav-menu button{background:none;border:0;cursor:pointer;outline:0}.nav-menu button .logo{height:28px;width:28px}.nav-menu .popup-container{align-items:stretch;bottom:0;display:flex;justify-content:stretch;left:0;position:fixed;right:0;top:0;z-index:10}.nav-panel{align-items:center;background-color:var(--panel-background);border-right:1px solid var(--panel-border);display:flex;flex-direction:column;justify-content:space-between;overflow:auto;padding-top:22px;width:120px}@media(max-width:768px){.nav-panel{padding-top:16px}}.nav-panel a:focus{border:0;outline:none}.nav-panel .logo{height:36px;width:36px}@media(max-width:768px){.nav-panel .logo{height:28px;width:28px}}.nav-panel .nav-panel-end,.nav-panel .nav-panel-middle{display:flex;flex-direction:column;margin:32px 0}.nav-panel .nav-panel--button{align-items:center;background:none;border:0;color:var(--text-color-secondary);cursor:pointer;display:flex;flex-direction:column;font-family:DM Sans,sans-serif;font-size:12px;font-size:.75rem;font-weight:700;height:50px;outline:0;text-decoration:none}.nav-panel .nav-panel--button.nav-panel--button__selected{color:var(--accent-primary)}.nav-panel .nav-panel--button .nav-panel-button-label{margin-top:10px}.nav-panel .nav-panel--button+.nav-panel--button{margin-top:32px}.nav-panel.full-width{width:100%}.nav-panel.full-width .nav-panel--button{flex-direction:row}.nav-panel.full-width .nav-panel--button .nav-panel-button-label{margin-left:16px;margin-top:0}.nav-panel.full-width .nav-panel--button+.nav-panel--button{margin-top:16px}.graph{display:flex;flex:1 1;flex-direction:column}.graph .bar-color-1{fill:var(--bar-color-1);background-color:var(--bar-color-1)}.graph .bar-color-2{fill:var(--bar-color-2);background-color:var(--bar-color-2)}.graph .bar-color-3{fill:var(--bar-color-3);background-color:var(--bar-color-3)}.graph .bar-color-4{fill:var(--bar-color-4);background-color:var(--bar-color-4)}.graph .title-row{display:flex;flex:1 1;flex-direction:row;justify-content:space-between;margin-bottom:32px}.graph .title-row .caption{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;text-transform:uppercase}.graph .title-row .key{align-items:center;display:flex;flex-direction:row;margin-left:16px}.graph .title-row .key .key-color{border-radius:10px;height:10px;width:16px}.graph .title-row .key .key-label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-left:16px}@media(max-width:768px){.graph .title-row .key{display:none}}.graph .canvas{color:var(--accent-primary);flex:1 1}.graph .canvas svg{height:200px;overflow:visible;width:100%}.graph .canvas svg .axis-label{fill:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500}.graph .canvas svg .axis-color{stroke:var(--text-color-secondary);opacity:.2}.info-panel{display:flex;flex:1 1;flex-direction:row;height:100px;width:345px}@media(max-width:480px){.info-panel{height:80px}}.info-panel .info--labels{flex:1 1;justify-content:center}.info-panel .value{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:24px;font-size:1.5rem;font-weight:700;margin-top:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-panel .value .value--small{font-size:14px;font-size:.875rem}.info-panel .value .lmi{font-size:14px}@media(max-width:1024px){.info-panel .value .lmi{font-size:18px;font-size:1.125rem}}@media(max-width:768px){.info-panel .value .lmi{font-size:17px;font-size:1.0625rem}}@media(max-width:480px){.info-panel .value .lmi{font-size:16px;font-size:1rem}}@media(max-width:1024px){.info-panel .value{font-size:18px;font-size:1.125rem}}@media(max-width:768px){.info-panel .value{font-size:17px;font-size:1.0625rem}}@media(max-width:480px){.info-panel .value{font-size:16px;font-size:1rem}}.info-panel .icon-container{align-items:center;border-radius:16px;display:flex;height:80px;justify-content:center;margin-right:20px;position:relative;width:80px}@media(max-width:480px){.info-panel .icon-container{height:60px;width:60px}}.info-panel .icon-container .icon-background{border-radius:16px;height:80px;opacity:.1;position:absolute;width:80px}@media(max-width:480px){.info-panel .icon-container .icon-background{height:60px;width:60px}}.info-panel .icon-container .icon-background.icon-background--green{background-color:#16e1d5}.info-panel .icon-container .icon-background.icon-background--orange{background-color:#ff8b5c}.info-panel .icon-container .icon-background.icon-background--blue{background-color:#4baaff}.info-panel .icon-container .icon-background.icon-background--purple{background-color:#666af6}.info-panel .icon-container svg{flex:1 1;z-index:1}.tooltip{display:flex;position:relative}.tooltip .tooltip__wrapper{background:var(--tooltip-background);border-radius:.25rem;color:var(--tooltip-text);font-family:DM Sans,sans-serif;margin-left:20px;margin-top:10px;opacity:0;padding:12px;position:absolute;right:0;text-align:center;top:100%;transition:all .25s;visibility:hidden;white-space:nowrap;white-space:break-spaces;width:300px;word-break:keep-all;z-index:1}.tooltip .tooltip__wrapper .tooltip__arrow{background:var(--tooltip-background);height:12px;position:absolute;right:150px;top:-6px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:12px}@media(max-width:1024px){.tooltip .tooltip__wrapper{display:none}}@media(max-width:768px){.tooltip .tooltip__wrapper{display:none}}@media(max-width:480px){.tooltip .tooltip__wrapper{display:none}}.tooltip .tooltip__children{cursor:pointer;font-weight:600;white-space:nowrap}@media(max-width:1024px){.tooltip .tooltip__children{cursor:text}}@media(max-width:768px){.tooltip .tooltip__children{cursor:text}}@media(max-width:480px){.tooltip .tooltip__children{cursor:text}}.peers-summary{padding:16px}.peers-summary .peers-summary--icon-button{background:none;border:0;color:var(--text-color-secondary);cursor:pointer;outline:0}.peers-summary .peers-summary--icon-button:hover{color:var(--accent-primary)}.peers-summary .peers-summary--item{align-items:center;background-color:var(--panel-background-highlight);border-radius:16px;display:flex;flex-direction:row;margin-bottom:16px;min-height:90px;overflow:hidden;padding:16px}.peers-summary .peers-summary--item:focus{border:0}.peers-summary .peers-summary--item .peer-health-icon{width:16px}.peers-summary .peers-summary--item .peer-id{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;font-weight:500;margin-left:16px;word-break:break-all}.home{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.home{padding:16px}}.home .content{flex:1 1;max-width:1080px}.home .content .banner{flex:1 1;height:140px}@media(max-width:1024px){.home .content .banner{height:auto}}.home .content .banner .node-info{display:flex;flex:1 1;flex-direction:column;justify-content:space-between;padding:16px}@media(max-width:1024px){.home .content .banner .node-info *+.secondary{margin-top:10px}}.home .content .banner .banner-curve{color:var(--panel-background-highlight)}@media(max-width:1024px){.home .content .banner .banner-curve{display:none}}.home .content .banner .banner-image{align-items:center;background-color:var(--panel-background-highlight);border-radius:0 16px 16px 0;display:flex;flex:1 1;justify-content:center}@media(max-width:1024px){.home .content .banner .banner-image{display:none}}.home .content .blocks-graph-panel .graph{padding:24px}.home .content .info-col{align-items:stretch;overflow:hidden;width:66%}@media(max-width:1024px){.home .content .info-col{width:auto}}.home .content .peers-summary-col{overflow:hidden;width:33%}@media(max-width:1024px){.home .content .peers-summary-col{width:auto}}.home .content .peers-summary-panel{margin-left:16px}@media(max-width:1024px){.home .content .peers-summary-panel{margin-left:0;margin-top:16px}}.home .content .info-panel+.info-panel{margin-left:16px}@media(max-width:768px){.home .content .info-panel+.info-panel{margin-left:0;margin-top:16px}}.spinner{-webkit-animation:pulse 1s ease-in-out infinite;animation:pulse 1s ease-in-out infinite;background-color:var(--text-color-secondary);border-radius:100%;height:40px;left:20px;position:relative;top:20px;width:40px}.spinner.spinner--compact{height:20px;left:10px;top:10px;width:20px}@-webkit-keyframes pulse{0%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0)}to{opacity:0;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}}@keyframes pulse{0%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0)}to{opacity:0;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}}.login{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.login{padding:16px}}.login .content{flex:1 1;max-width:1080px}.block-button{position:relative}.block-button .block-button-btn{background:none;border:0;cursor:pointer;outline:none}.block-button .block-button-btn svg{color:var(--text-color-secondary)}.block-button .block-button-btn:hover svg{color:var(--text-color-primary)}.block-button .block-button-btn:focus svg{color:var(--accent-primary)}.block-button .block-button--message{-webkit-animation:fade 2s linear;animation:fade 2s linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;color:var(--accent-primary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:700;min-width:200px;opacity:1;position:absolute;text-transform:uppercase}.block-button .block-button--message.block-button--message--right{margin-left:10px;top:3px}.block-button .block-button--message.block-button--message--top{left:-10px;top:-15px}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}.peer{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.peer{padding:16px}}.peer .content{flex:1 1;max-width:1080px}.peer .content .peer--icon-button{background:none;border:0;color:var(--text-color-secondary);cursor:pointer;outline:0}.peer .content .peer--icon-button:hover{color:var(--accent-primary)}.peer .content .banner .node-info{display:flex;flex:1 1;flex-direction:column;justify-content:space-between;padding:16px}.peer .content .banner .node-info .block-button .block-button-btn svg{height:16px;width:16px}.peer .content .banner .health-indicators{border-left:1px solid var(--panel-border);justify-content:space-around}.peer .content .banner .health-indicators .child{padding:0 16px}@media(max-width:768px)and (min-width:481px){.peer .content .banner .health-indicators{justify-content:space-between;margin:0 16px}.peer .content .banner .health-indicators .child{padding:16px 0}}@media(max-width:480px){.peer .content .banner .health-indicators .child{padding:10px 16px}}@media(max-width:768px){.peer .content .info{flex-direction:column}}.peer .content .info .info-panel+.info-panel{margin-left:16px}@media(max-width:768px){.peer .content .info .info-panel+.info-panel{margin-left:0;margin-top:16px}}.peer .content .blocks-graph-panel .graph{padding:24px}.peer .content .gossip{padding:16px 0 0 16px}.peer .content .gossip .gossip-item{height:75px;margin-right:16px;width:155px}@media(max-width:1024px){.peer .content .gossip .gossip-item{width:160px}}.peer .content .gossip .gossip-item h4{min-height:30px}.peer .content .gossip .gossip-item .gossip-value{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:24px;font-size:1.5rem;font-weight:700;white-space:nowrap}.dialog-click-shield{background:var(--dialog-shield);opacity:.2}.dialog-click-shield,.dialog-container{bottom:0;left:0;position:absolute;right:0;top:0}.dialog-container{align-items:center;display:flex;justify-content:center}.dialog-container .dialog{background:var(--panel-background);border:1px solid var(--panel-border);border-radius:10px;box-shadow:5px 5px 5px 0 var(--drop-shadow);display:flex;flex-direction:column;max-height:800px;min-height:400px;padding:20px;width:500px}@media(max-width:768px){.dialog-container .dialog{min-width:90%}}.dialog-container .dialog .dialog-header{border-bottom:1px solid var(--panel-border);margin-bottom:20px}.dialog-container .dialog .dialog-content{flex:1 1}.dialog-container .dialog .dialog-content .dialog--label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-bottom:5px;margin-top:16px;text-transform:uppercase}.dialog-container .dialog .dialog-footer{display:flex;justify-content:flex-end}.dialog-container .dialog .dialog-footer button{align-items:center;background:none;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);cursor:pointer;display:flex;flex-direction:row;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;margin-top:24px;outline:0;padding:6px 12px}.dialog-container .dialog .dialog-footer button+button{margin-left:16px}.dialog-container .dialog .dialog-footer button:hover{color:var(--accent-primary)}.dialog-container .dialog .dialog-footer button:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.dialog-container .dialog .dialog-footer button:disabled{opacity:.5;pointer-events:none}.peers{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.peers{padding:16px}}.peers .content{flex:1 1;max-width:1080px}.peers .content .peers--icon-button{background:none;border:0;color:var(--text-color-secondary);cursor:pointer;margin-right:16px;outline:0}.peers .content .peers--icon-button:hover{color:var(--accent-primary)}.peers .content .add-button{align-items:center;background:var(--bar-color-2);border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);cursor:pointer;display:flex;flex-direction:row;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;outline:0;padding:6px 12px}.peers .content .add-button:hover{color:var(--accent-primary)}.peers .content .add-button:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.peers .content .peers-panel{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}@media(max-width:1340px){.peers .content .peers-panel{flex-direction:column;flex-wrap:nowrap;justify-content:flex-start}}.peers .content .peers-panel .peers-panel--item{margin-top:16px;overflow:hidden;width:532px}@media(max-width:1340px){.peers .content .peers-panel .peers-panel--item{width:100%}}.peers .content .peers-panel .peers-panel--item .card{padding:32px}.peers .content .peers-panel .peers-panel--item .card .peer-health{height:16px;margin-right:16px;width:16px}.peers .content .peers-panel .peers-panel--item .card .peer-id{color:var(--text-color-primary);display:flex;flex-direction:column;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;font-weight:500}@media(min-width:1340px){.peers .content .peers-panel .peers-panel--item .card .peer-id{font-size:12px;font-size:.75rem}}.peers .content .peers-panel .peers-panel--item .card .graph{margin-top:24px}.peers .content .peers-panel .peers-panel--item .card .peer-actions{justify-content:space-between;margin-top:16px}@media(max-width:720px){.peers .content .peers-panel .peers-panel--item .card .peer-actions{flex-direction:column}.peers .content .peers-panel .peers-panel--item .card .peer-actions .card--action{justify-content:center}.peers .content .peers-panel .peers-panel--item .card .peer-actions p{display:flex;justify-content:center}}.card{background-color:var(--panel-background);border:1px solid var(--panel-border);border-radius:16px;padding:10px}.card.card__flat{border-radius:0}.card .card--header{align-items:center;color:var(--text-color-primary);display:flex;flex-direction:row}.card .card--header-count{align-items:center;background-color:var(--background);border-radius:6px;color:var(--accent-primary);display:flex;font-family:DM Sans,sans-serif;font-size:12px;font-size:.75rem;font-weight:700;height:24px;margin-left:20px;padding:0 8px;white-space:nowrap}.card .card--label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-bottom:5px;margin-top:16px;text-transform:uppercase}.card .card--value{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;word-break:break-all}.card .card--value a{color:var(--accent-primary);text-decoration:none}.card .card--value a:hover{text-decoration:underline}.card .card--value .card--value--button{background:none;border:0;color:var(--accent-primary);cursor:pointer;outline:0}.card .card--value.card--value__mono{font-family:IBM Plex Mono,monospace}.card .card--value.card--value-textarea{background:var(--panel-border);font-family:IBM Plex Mono,monospace;font-size:12px;font-size:.75rem;max-height:150px;min-height:150px;overflow:auto;padding:10px}.card .card--value.card--value-textarea.card--value-textarea__utf8{max-height:350px;white-space:pre-wrap}.card .card--value.card--value-textarea.card--value-textarea__hex{max-height:350px;white-space:pre-wrap;word-break:break-word}.card .card--value.card--value-textarea.card--value-textarea__json{max-height:350px;white-space:pre-wrap}.card .card--value.card--value-textarea.card--value-textarea__fit{min-height:auto}.card .card--content{padding:0 30px 20px}@media(max-width:480px){.card .card--content{padding:15px 20px}}.card .card--content input{padding:0 20px}.card .card--content .card--content--border-l{border-left:1px solid var(--text-color-primary);padding-left:16px}.card .card--content .card--content__input{align-items:center;display:flex}.card .card--content .card--content__input .card--content__input--dropdown{cursor:pointer;margin-left:-2px}.card .card--content .card--content__input .card--content__input--dropdown svg{transition:-webkit-transform .25s ease;transition:transform .25s ease;transition:transform .25s ease,-webkit-transform .25s ease}.card .card--content .card--content__input .card--content__input--dropdown svg path{fill:var(--text-color-primary)}.card .card--content .card--content__input .card--content__input--dropdown.opened>svg{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.card .card--content .card--content__input .card--content__input--label{cursor:pointer}.card .card--action{align-items:center;background:none;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);cursor:pointer;display:flex;flex-direction:row;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;outline:0;padding:6px 12px}.card .card--action:hover{color:var(--accent-primary)}.card .card--action:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.card .card--action:disabled{opacity:.5;pointer-events:none}.card .card--action.card--action-plain{border:0;color:var(--text-color-secondary)}.card .card--action.card--action-plain:hover{color:var(--accent-primary)}.card .card--action.card--action-danger{background-color:rgba(220,53,69,.1)}.card .card--action.card--action-primary{background-color:var(--accent-primary);color:#fff}.card .card--action.card--action-primary:hover{color:#fff}.visualizer{display:flex;flex:1 1;height:100%;overflow:hidden;position:relative}.visualizer .canvas{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.visualizer .action-panel-container{display:flex;position:absolute;right:30px;top:30px;z-index:2}.visualizer .stats-panel-container{align-items:center;bottom:0;display:flex;justify-content:center;pointer-events:none;position:absolute;right:30px;top:0;z-index:1}.visualizer .stats-panel-container .stats-panel .card--label,.visualizer .stats-panel-container .stats-panel .card--value{text-align:right}.visualizer .key-panel-container{bottom:30px;display:flex;justify-content:center;left:30px;pointer-events:none;position:absolute;right:30px;z-index:1}.visualizer .key-panel-container .key-panel{display:flex;flex-direction:row;flex-wrap:wrap;padding:16px}.visualizer .key-panel-container .key-panel .key-panel-item{align-items:center;display:flex;flex-direction:row;margin:0 16px}@media(max-width:1024px){.visualizer .key-panel-container .key-panel .key-panel-item{margin:0;width:110px}}.visualizer .key-panel-container .key-panel .key-panel-item .key-marker{border-radius:3px;height:12px;margin-right:10px;width:12px}.visualizer .key-panel-container .key-panel .key-panel-item .key-label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;font-weight:500}.visualizer .info-panel-container{display:flex;left:30px;position:absolute;top:30px;width:320px;z-index:2}@media(max-width:480px){.visualizer .info-panel-container{left:10px;top:10px;width:90%}}.visualizer .info-panel-container .info-panel--key{border-radius:3px;height:16px;margin-right:10px;width:16px}.visualizer .vertex-state--unknown{background-color:#9aadce}.visualizer .vertex-state--pending{background-color:#ecdf1e}.visualizer .vertex-state--accepted{background-color:#8fe6fa}.visualizer .vertex-state--confirmed{background-color:#2260e7}.visualizer .vertex-state--finalized{background-color:#61e884}.visualizer .vertex-state--transaction{background-color:#c061e8}.visualizer .vertex-state--validation{background-color:#d92121}.visualizer .vertex-state--tip{background-color:#ff8b5c}.row{display:flex;flex-direction:row}.row.start{justify-content:flex-start}.row.middle{align-items:center}.row.end{justify-content:flex-end}.row.bottom{align-items:flex-end}.row.inline{display:inline-flex}.row.spread{justify-content:space-between}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column}@media(max-width:480px){.col.phone-down-column,.row.phone-down-column{flex-direction:column}.col.start,.row.start{align-items:flex-start}}@media(max-width:768px){.col.tablet-down-column,.row.tablet-down-column{flex-direction:column}.col.start,.row.start{align-items:flex-start}}@media(max-width:768px)and (min-width:481px){.col.tablet-down-only-column,.row.tablet-down-only-column{flex-direction:column}.col.tablet-down-only-column.start,.row.tablet-down-only-column.start{align-items:flex-start}}@media(max-width:1024px){.col.desktop-down-column,.row.desktop-down-column{flex-direction:column}}@media(max-width:480px){.col.phone-down-row,.row.phone-down-row{flex-direction:row}}@media(max-width:768px){.col.tablet-down-row,.row.tablet-down-row{flex-direction:row}}@media(max-width:768px)and (min-width:481px){.col.tablet-down-only-row,.row.tablet-down-only-row{flex-direction:row}}@media(max-width:1024px){.col.desktop-down-row,.row.desktop-down-row{flex-direction:row}}.fill{flex:1 1}.margin-t-t{margin-top:10px}.margin-t-s{margin-top:16px}.margin-t-m{margin-top:24px}.margin-t-l{margin-top:32px}.margin-b-t{margin-bottom:10px}.margin-b-s{margin-bottom:16px}.margin-b-m{margin-bottom:24px}.margin-b-l{margin-bottom:32px}.margin-r-t{margin-right:10px}.margin-r-s{margin-right:16px}.margin-r-m{margin-right:24px}.margin-r-l{margin-right:32px}.margin-l-t{margin-left:10px}.margin-l-s{margin-left:16px}.margin-l-m{margin-left:24px}.margin-l-l{margin-left:32px}.padding-t{padding:10px}.padding-s{padding:16px}.padding-m{padding:24px}.padding-l{padding:32px}.padding-t-m{padding-top:24px}.padding-b-m{padding-bottom:24px}.padding-l-m{padding-left:24px}.padding-r-m{padding-right:24px}.padding-t-s{padding-top:16px}.padding-b-s{padding-bottom:16px}.padding-l-s{padding-left:16px}.padding-r-s{padding-right:16px}.padding-t-0{padding-top:0}.padding-b-0{padding-bottom:0}.padding-l-0{padding-left:0}.padding-r-0{padding-right:0}.padding-0{padding:0!important}.select-wrapper{display:inline-block;position:relative}.select-wrapper svg{color:var(--text-color-primary);pointer-events:none;position:absolute;right:18px;top:16px;z-index:2}.select-wrapper select{-webkit-appearance:none;appearance:none;background-color:transparent;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;height:40px;margin:0;outline:none;padding:0 48px 0 20px}.select-wrapper select:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.select-wrapper select:-ms-expand{display:none}.select-wrapper select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--text-color-primary)}.select-wrapper select option{background-color:var(--panel-background);color:var(--text-color-primary)}input{-webkit-appearance:none;appearance:none;background-color:transparent;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;height:40px;margin:0;outline:none;padding:0 48px 0 20px}input:focus{box-shadow:0 0 3px 0 var(--accent-primary)}input:disabled{opacity:.5}input.input--stretch{width:100%}input[type=file]::-webkit-file-upload-button{display:none}input[type=file]::file-selector-button{display:none}.file-wrapper{display:inline-block;position:relative}.file-wrapper input{padding-left:30px}.file-wrapper svg{left:0;position:absolute;top:5px}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-regular.9566aaac2083dccdc16e.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-regular.3b454dabbbc54e81472b.woff) format("woff")}@font-face{font-family:DM Sans;font-style:italic;font-weight:400;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-italic.ec0d193561f819682cad.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-italic.a8c70447613f107d41ce.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-500.b50824fe4ff335be8c64.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-500.04c32ae08800337a4522.woff) format("woff")}@font-face{font-family:DM Sans;font-style:italic;font-weight:500;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-500italic.27b4c41ba7509c338a2e.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-500italic.07f59529a219a0932ea6.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-700.659104546f390e057efe.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-700.d5d2cff5228e83ca0dff.woff) format("woff")}@font-face{font-family:DM Sans;font-style:italic;font-weight:700;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-700italic.0b9a371cba3993d95273.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-700italic.c24b3efb7a5a5e1052ac.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-300.e1de2ee312e829aaa425.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-300.bdbb6d895bbfd517ce5b.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-italic.1c4b3c62369a45fdc78f.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-italic.855a333e76f724107ca3.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-regular.c708fd4f02694c48059f.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-regular.12ead37cece64fd8fab0.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-500.1eeaa99b03ad926d0cd6.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-500.67acf1407a576e8a8832.woff) format("woff")}.font-weight-bold{font-weight:700!important}.font-weight-normal{font-weight:400!important}.font-weight-light{font-weight:300!important}.font-italic{font-style:italic!important}h1{font-size:24px;font-size:1.5rem;white-space:nowrap}h1,h2{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-weight:700;text-decoration:none}h2{font-size:18px;font-size:1.125rem}h3{color:var(--text-color-primary);font-size:14px;font-size:.875rem;font-weight:700}h3,h4{font-family:DM Sans,sans-serif;text-decoration:none}h4{color:var(--text-color-secondary);font-size:10px;font-size:.625rem;font-weight:500;text-transform:uppercase}p{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem}a{outline:0;text-decoration:none}a:focus{border-bottom:1px solid var(--accent-primary)}hr{background-color:var(--panel-border);border:0;height:1px;margin:24px 0}.secondary{color:var(--text-color-secondary)}.icon-button{background:none;border:0;border-radius:10px;cursor:pointer;outline:0;padding:10px}.icon-button:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.word-break{word-break:break-word}.word-break-all{word-break:break-all}.hide-overflow{overflow:hidden}.d-none{display:none!important}.text-ellipsis{text-overflow:ellipsis}@media(max-width:480px){.phone-down-hide{display:none}}.theme-dark{--background:#22293e;--panel-background:#2b3659;--panel-border:#212a44;--panel-background-highlight:#353f60;--text-color-primary:#f1f4fa;--text-color-secondary:#9aadce;--accent-primary:#108cff;--bar-color-1:#309cff;--bar-color-2:#1f629f;--bar-color-3:#b7dcff;--bar-color-4:#e4f2ff;--scroll-thumb:#2b3659;--scroll-background:#212a44;--drop-shadow:#22293e;--dialog-shield:#aaa;--tooltip-background:#9aadce;--tooltip-text:#22293e}.theme-light{--background:#f6f9ff;--panel-background:#fff;--panel-background-highlight:#f6f8fc;--panel-border:#eef4ff;--text-color-primary:#25395f;--text-color-secondary:#9aadce;--accent-primary:#108cff;--bar-color-1:#309cff;--bar-color-2:#b7dcff;--bar-color-3:#1f629f;--bar-color-4:#0a3257;--scroll-thumb:#9aadce;--scroll-background:#fff;--drop-shadow:#aaa;--dialog-shield:#111;--tooltip-background:#9aadce;--tooltip-text:#fff}html{height:100%}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--background);display:flex;height:100vh;overflow:hidden}body #root{display:flex;flex:1 1}body #root .success{color:#28a745}body #root .warning{color:#ffc107}body #root .danger{color:#dc3545}body #root .info{color:#17a2b8}::-webkit-scrollbar-track{background-color:var(--scroll-background);border-radius:0}::-webkit-scrollbar{background-color:var(--scroll-background);width:12px}::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);border-radius:0} -/*# sourceMappingURL=main.37fcc5fd.css.map*/ \ No newline at end of file +.app{align-items:stretch;display:flex;flex:1 1;flex-direction:row;min-width:320px;overflow:hidden}.app .scroll-content{overflow:auto}@media(max-width:768px){.app .health-indicators{padding:16px 20px}}@media(max-width:480px){.app .health-indicators{padding:16px 20px 16px 66px}}.header{align-items:center;background-color:var(--panel-background);display:flex;height:80px;justify-content:center;padding:16px}@media(max-width:768px){.header{height:60px;justify-content:flex-start;padding-left:0}}@media(max-width:480px){.header{padding-left:16px}}.header .content{display:flex;flex:1 1;flex-direction:row;max-width:1080px}.header .content .child{border-right:1px solid var(--panel-border);padding:10px 24px}@media(max-width:1024px){.header .content .child{padding:10px}}.header .content .child.child-fill{flex:1 1;min-width:250px;padding-right:40px}@media(max-width:768px){.header .content .child.child-fill{min-width:0;min-width:auto;padding-right:0}}.health-indicator{align-items:center;display:flex}.health-indicator .label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-left:16px;text-transform:uppercase}.micro-graph{display:flex;flex-direction:column;justify-content:flex-start;width:130px}.micro-graph .label{color:var(--text-color-secondary);font-size:10px;font-size:.625rem;font-weight:500;text-transform:uppercase}.micro-graph .label,.micro-graph .value{font-family:DM Sans,sans-serif;white-space:nowrap}.micro-graph .value{color:var(--text-color-primary);font-size:16px;font-size:1rem;font-weight:700}.micro-graph .canvas{color:var(--accent-primary)}.micro-graph .canvas svg{overflow:visible}.nav-menu{align-items:center;display:flex}.nav-menu button{background:none;border:0;cursor:pointer;outline:0}.nav-menu button .logo{height:28px;width:28px}.nav-menu .popup-container{align-items:stretch;bottom:0;display:flex;justify-content:stretch;left:0;position:fixed;right:0;top:0;z-index:10}.nav-panel{align-items:center;background-color:var(--panel-background);border-right:1px solid var(--panel-border);display:flex;flex-direction:column;justify-content:space-between;overflow:auto;padding-top:22px;width:120px}@media(max-width:768px){.nav-panel{padding-top:16px}}.nav-panel a:focus{border:0;outline:none}.nav-panel .logo{height:36px;width:36px}@media(max-width:768px){.nav-panel .logo{height:28px;width:28px}}.nav-panel .nav-panel-end,.nav-panel .nav-panel-middle{display:flex;flex-direction:column;margin:32px 0}.nav-panel .nav-panel--button{align-items:center;background:none;border:0;color:var(--text-color-secondary);cursor:pointer;display:flex;flex-direction:column;font-family:DM Sans,sans-serif;font-size:12px;font-size:.75rem;font-weight:700;height:50px;outline:0;text-decoration:none}.nav-panel .nav-panel--button.nav-panel--button__selected{color:var(--accent-primary)}.nav-panel .nav-panel--button .nav-panel-button-label{margin-top:10px}.nav-panel .nav-panel--button+.nav-panel--button{margin-top:32px}.nav-panel.full-width{width:100%}.nav-panel.full-width .nav-panel--button{flex-direction:row}.nav-panel.full-width .nav-panel--button .nav-panel-button-label{margin-left:16px;margin-top:0}.nav-panel.full-width .nav-panel--button+.nav-panel--button{margin-top:16px}.graph{display:flex;flex:1 1;flex-direction:column}.graph .bar-color-1{fill:var(--bar-color-1);background-color:var(--bar-color-1)}.graph .bar-color-2{fill:var(--bar-color-2);background-color:var(--bar-color-2)}.graph .bar-color-3{fill:var(--bar-color-3);background-color:var(--bar-color-3)}.graph .bar-color-4{fill:var(--bar-color-4);background-color:var(--bar-color-4)}.graph .title-row{display:flex;flex:1 1;flex-direction:row;justify-content:space-between;margin-bottom:32px}.graph .title-row .caption{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;text-transform:uppercase}.graph .title-row .key{align-items:center;display:flex;flex-direction:row;margin-left:16px}.graph .title-row .key .key-color{border-radius:10px;height:10px;width:16px}.graph .title-row .key .key-label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-left:16px}@media(max-width:768px){.graph .title-row .key{display:none}}.graph .canvas{color:var(--accent-primary);flex:1 1}.graph .canvas svg{height:200px;overflow:visible;width:100%}.graph .canvas svg .axis-label{fill:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500}.graph .canvas svg .axis-color{stroke:var(--text-color-secondary);opacity:.2}.info-panel{display:flex;flex:1 1;flex-direction:row;height:100px;width:345px}@media(max-width:480px){.info-panel{height:80px}}.info-panel .info--labels{flex:1 1;justify-content:center}.info-panel .value{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:24px;font-size:1.5rem;font-weight:700;margin-top:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.info-panel .value .value--small{font-size:14px;font-size:.875rem}.info-panel .value .lmi{font-size:14px}@media(max-width:1024px){.info-panel .value .lmi{font-size:18px;font-size:1.125rem}}@media(max-width:768px){.info-panel .value .lmi{font-size:17px;font-size:1.0625rem}}@media(max-width:480px){.info-panel .value .lmi{font-size:16px;font-size:1rem}}@media(max-width:1024px){.info-panel .value{font-size:18px;font-size:1.125rem}}@media(max-width:768px){.info-panel .value{font-size:17px;font-size:1.0625rem}}@media(max-width:480px){.info-panel .value{font-size:16px;font-size:1rem}}.info-panel .icon-container{align-items:center;border-radius:16px;display:flex;height:80px;justify-content:center;margin-right:20px;position:relative;width:80px}@media(max-width:480px){.info-panel .icon-container{height:60px;width:60px}}.info-panel .icon-container .icon-background{border-radius:16px;height:80px;opacity:.1;position:absolute;width:80px}@media(max-width:480px){.info-panel .icon-container .icon-background{height:60px;width:60px}}.info-panel .icon-container .icon-background.icon-background--green{background-color:#16e1d5}.info-panel .icon-container .icon-background.icon-background--orange{background-color:#ff8b5c}.info-panel .icon-container .icon-background.icon-background--blue{background-color:#4baaff}.info-panel .icon-container .icon-background.icon-background--purple{background-color:#666af6}.info-panel .icon-container svg{flex:1 1;z-index:1}.tooltip{display:flex;position:relative}.tooltip .tooltip__wrapper{background:var(--tooltip-background);border-radius:.25rem;color:var(--tooltip-text);font-family:DM Sans,sans-serif;margin-left:20px;margin-top:10px;opacity:0;padding:12px;position:absolute;right:0;text-align:center;top:100%;transition:all .25s;visibility:hidden;white-space:nowrap;white-space:break-spaces;width:300px;word-break:keep-all;z-index:1}.tooltip .tooltip__wrapper .tooltip__arrow{background:var(--tooltip-background);height:12px;position:absolute;right:150px;top:-6px;-webkit-transform:rotate(45deg);transform:rotate(45deg);width:12px}@media(max-width:1024px){.tooltip .tooltip__wrapper{display:none}}@media(max-width:768px){.tooltip .tooltip__wrapper{display:none}}@media(max-width:480px){.tooltip .tooltip__wrapper{display:none}}.tooltip .tooltip__children{cursor:pointer;font-weight:600;white-space:nowrap}@media(max-width:1024px){.tooltip .tooltip__children{cursor:text}}@media(max-width:768px){.tooltip .tooltip__children{cursor:text}}@media(max-width:480px){.tooltip .tooltip__children{cursor:text}}.peers-summary{padding:16px}.peers-summary .peers-summary--icon-button{background:none;border:0;color:var(--text-color-secondary);cursor:pointer;outline:0}.peers-summary .peers-summary--icon-button:hover{color:var(--accent-primary)}.peers-summary .peers-summary--item{align-items:center;background-color:var(--panel-background-highlight);border-radius:16px;display:flex;flex-direction:row;margin-bottom:16px;min-height:90px;overflow:hidden;padding:16px}.peers-summary .peers-summary--item:focus{border:0}.peers-summary .peers-summary--item .peer-health-icon{width:16px}.peers-summary .peers-summary--item .peer-id{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;font-weight:500;margin-left:16px;word-break:break-all}.home{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.home{padding:16px}}.home .content{flex:1 1;max-width:1080px}.home .content .banner{flex:1 1;height:140px}@media(max-width:1024px){.home .content .banner{height:auto}}.home .content .banner .node-info{display:flex;flex:1 1;flex-direction:column;justify-content:space-between;padding:16px}@media(max-width:1024px){.home .content .banner .node-info *+.secondary{margin-top:10px}}.home .content .banner .banner-curve{color:var(--panel-background-highlight)}@media(max-width:1024px){.home .content .banner .banner-curve{display:none}}.home .content .banner .banner-image{align-items:center;background-color:var(--panel-background-highlight);border-radius:0 16px 16px 0;display:flex;flex:1 1;justify-content:center}@media(max-width:1024px){.home .content .banner .banner-image{display:none}}.home .content .blocks-graph-panel .graph{padding:24px}.home .content .info-col{align-items:stretch;overflow:hidden;width:66%}@media(max-width:1024px){.home .content .info-col{width:auto}}.home .content .peers-summary-col{overflow:hidden;width:33%}@media(max-width:1024px){.home .content .peers-summary-col{width:auto}}.home .content .peers-summary-panel{margin-left:16px}@media(max-width:1024px){.home .content .peers-summary-panel{margin-left:0;margin-top:16px}}.home .content .info-panel+.info-panel{margin-left:16px}@media(max-width:768px){.home .content .info-panel+.info-panel{margin-left:0;margin-top:16px}}.spinner{-webkit-animation:pulse 1s ease-in-out infinite;animation:pulse 1s ease-in-out infinite;background-color:var(--text-color-secondary);border-radius:100%;height:40px;left:20px;position:relative;top:20px;width:40px}.spinner.spinner--compact{height:20px;left:10px;top:10px;width:20px}@-webkit-keyframes pulse{0%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0)}to{opacity:0;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}}@keyframes pulse{0%{opacity:1;-webkit-transform:translate(-50%,-50%) scale(0);transform:translate(-50%,-50%) scale(0)}to{opacity:0;-webkit-transform:translate(-50%,-50%) scale(1);transform:translate(-50%,-50%) scale(1)}}.login{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.login{padding:16px}}.login .content{flex:1 1;max-width:1080px}.block-button{position:relative}.block-button .block-button-btn{background:none;border:0;cursor:pointer;outline:none}.block-button .block-button-btn svg{color:var(--text-color-secondary)}.block-button .block-button-btn:hover svg{color:var(--text-color-primary)}.block-button .block-button-btn:focus svg{color:var(--accent-primary)}.block-button .block-button--message{-webkit-animation:fade 2s linear;animation:fade 2s linear;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;color:var(--accent-primary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:700;min-width:200px;opacity:1;position:absolute;text-transform:uppercase}.block-button .block-button--message.block-button--message--right{margin-left:10px;top:3px}.block-button .block-button--message.block-button--message--top{left:-10px;top:-15px}@-webkit-keyframes fade{0%,to{opacity:0}50%{opacity:1}}@keyframes fade{0%,to{opacity:0}50%{opacity:1}}.peer{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.peer{padding:16px}}.peer .content{flex:1 1;max-width:1080px}.peer .content .peer--icon-button{background:none;border:0;color:var(--text-color-secondary);cursor:pointer;outline:0}.peer .content .peer--icon-button:hover{color:var(--accent-primary)}.peer .content .banner .node-info{display:flex;flex:1 1;flex-direction:column;justify-content:space-between;padding:16px}.peer .content .banner .node-info .block-button .block-button-btn svg{height:16px;width:16px}.peer .content .banner .health-indicators{border-left:1px solid var(--panel-border);justify-content:space-around}.peer .content .banner .health-indicators .child{padding:0 16px}@media(max-width:768px)and (min-width:481px){.peer .content .banner .health-indicators{justify-content:space-between;margin:0 16px}.peer .content .banner .health-indicators .child{padding:16px 0}}@media(max-width:480px){.peer .content .banner .health-indicators .child{padding:10px 16px}}@media(max-width:768px){.peer .content .info{flex-direction:column}}.peer .content .info .info-panel+.info-panel{margin-left:16px}@media(max-width:768px){.peer .content .info .info-panel+.info-panel{margin-left:0;margin-top:16px}}.peer .content .blocks-graph-panel .graph{padding:24px}.peer .content .gossip{padding:16px 0 0 16px}.peer .content .gossip .gossip-item{height:75px;margin-right:16px;width:155px}@media(max-width:1024px){.peer .content .gossip .gossip-item{width:160px}}.peer .content .gossip .gossip-item h4{min-height:30px}.peer .content .gossip .gossip-item .gossip-value{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:24px;font-size:1.5rem;font-weight:700;white-space:nowrap}.dialog-click-shield{background:var(--dialog-shield);opacity:.2}.dialog-click-shield,.dialog-container{bottom:0;left:0;position:absolute;right:0;top:0}.dialog-container{align-items:center;display:flex;justify-content:center}.dialog-container .dialog{background:var(--panel-background);border:1px solid var(--panel-border);border-radius:10px;box-shadow:5px 5px 5px 0 var(--drop-shadow);display:flex;flex-direction:column;max-height:800px;min-height:400px;padding:20px;width:500px}@media(max-width:768px){.dialog-container .dialog{min-width:90%}}.dialog-container .dialog .dialog-header{border-bottom:1px solid var(--panel-border);margin-bottom:20px}.dialog-container .dialog .dialog-content{flex:1 1}.dialog-container .dialog .dialog-content .dialog--label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-bottom:5px;margin-top:16px;text-transform:uppercase}.dialog-container .dialog .dialog-footer{display:flex;justify-content:flex-end}.dialog-container .dialog .dialog-footer button{align-items:center;background:none;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);cursor:pointer;display:flex;flex-direction:row;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;margin-top:24px;outline:0;padding:6px 12px}.dialog-container .dialog .dialog-footer button+button{margin-left:16px}.dialog-container .dialog .dialog-footer button:hover{color:var(--accent-primary)}.dialog-container .dialog .dialog-footer button:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.dialog-container .dialog .dialog-footer button:disabled{opacity:.5;pointer-events:none}.peers{display:flex;flex:1 1;justify-content:center;padding:60px}@media(max-width:1024px){.peers{padding:16px}}.peers .content{flex:1 1;max-width:1080px}.peers .content .peers--icon-button{background:none;border:0;color:var(--text-color-secondary);cursor:pointer;margin-right:16px;outline:0}.peers .content .peers--icon-button:hover{color:var(--accent-primary)}.peers .content .add-button{align-items:center;background:var(--bar-color-2);border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);cursor:pointer;display:flex;flex-direction:row;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;outline:0;padding:6px 12px}.peers .content .add-button:hover{color:var(--accent-primary)}.peers .content .add-button:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.peers .content .peers-panel{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-between}@media(max-width:1340px){.peers .content .peers-panel{flex-direction:column;flex-wrap:nowrap;justify-content:flex-start}}.peers .content .peers-panel .peers-panel--item{margin-top:16px;overflow:hidden;width:532px}@media(max-width:1340px){.peers .content .peers-panel .peers-panel--item{width:100%}}.peers .content .peers-panel .peers-panel--item .card{padding:32px}.peers .content .peers-panel .peers-panel--item .card .peer-health{height:16px;margin-right:16px;width:16px}.peers .content .peers-panel .peers-panel--item .card .peer-id{color:var(--text-color-primary);display:flex;flex-direction:column;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;font-weight:500}@media(min-width:1340px){.peers .content .peers-panel .peers-panel--item .card .peer-id{font-size:12px;font-size:.75rem}}.peers .content .peers-panel .peers-panel--item .card .graph{margin-top:24px}.peers .content .peers-panel .peers-panel--item .card .peer-actions{justify-content:space-between;margin-top:16px}@media(max-width:720px){.peers .content .peers-panel .peers-panel--item .card .peer-actions{flex-direction:column}.peers .content .peers-panel .peers-panel--item .card .peer-actions .card--action{justify-content:center}.peers .content .peers-panel .peers-panel--item .card .peer-actions p{display:flex;justify-content:center}}.card{background-color:var(--panel-background);border:1px solid var(--panel-border);border-radius:16px;padding:10px}.card.card__flat{border-radius:0}.card .card--header{align-items:center;color:var(--text-color-primary);display:flex;flex-direction:row}.card .card--header-count{align-items:center;background-color:var(--background);border-radius:6px;color:var(--accent-primary);display:flex;font-family:DM Sans,sans-serif;font-size:12px;font-size:.75rem;font-weight:700;height:24px;margin-left:20px;padding:0 8px;white-space:nowrap}.card .card--label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:10px;font-size:.625rem;font-weight:500;margin-bottom:5px;margin-top:16px;text-transform:uppercase}.card .card--value{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;word-break:break-all}.card .card--value a{color:var(--accent-primary);text-decoration:none}.card .card--value a:hover{text-decoration:underline}.card .card--value .card--value--button{background:none;border:0;color:var(--accent-primary);cursor:pointer;outline:0}.card .card--value.card--value__mono{font-family:IBM Plex Mono,monospace}.card .card--value.card--value-textarea{background:var(--panel-border);font-family:IBM Plex Mono,monospace;font-size:12px;font-size:.75rem;max-height:150px;min-height:150px;overflow:auto;padding:10px}.card .card--value.card--value-textarea.card--value-textarea__utf8{max-height:350px;white-space:pre-wrap}.card .card--value.card--value-textarea.card--value-textarea__hex{max-height:350px;white-space:pre-wrap;word-break:break-word}.card .card--value.card--value-textarea.card--value-textarea__json{max-height:350px;white-space:pre-wrap}.card .card--value.card--value-textarea.card--value-textarea__fit{min-height:auto}.card .card--content{padding:0 30px 20px}@media(max-width:480px){.card .card--content{padding:15px 20px}}.card .card--content input{padding:0 20px}.card .card--content .card--content--border-l{border-left:1px solid var(--text-color-primary);padding-left:16px}.card .card--content .card--content__input{align-items:center;display:flex}.card .card--content .card--content__input .card--content__input--dropdown{cursor:pointer;margin-left:-2px}.card .card--content .card--content__input .card--content__input--dropdown svg{transition:-webkit-transform .25s ease;transition:transform .25s ease;transition:transform .25s ease,-webkit-transform .25s ease}.card .card--content .card--content__input .card--content__input--dropdown svg path{fill:var(--text-color-primary)}.card .card--content .card--content__input .card--content__input--dropdown.opened>svg{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.card .card--content .card--content__input .card--content__input--label{cursor:pointer}.card .card--action{align-items:center;background:none;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);cursor:pointer;display:flex;flex-direction:row;font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;outline:0;padding:6px 12px}.card .card--action:hover{color:var(--accent-primary)}.card .card--action:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.card .card--action:disabled{opacity:.5;pointer-events:none}.card .card--action.card--action-plain{border:0;color:var(--text-color-secondary)}.card .card--action.card--action-plain:hover{color:var(--accent-primary)}.card .card--action.card--action-danger{background-color:rgba(220,53,69,.1)}.card .card--action.card--action-primary{background-color:var(--accent-primary);color:#fff}.card .card--action.card--action-primary:hover{color:#fff}.visualizer{display:flex;flex:1 1;height:100%;overflow:hidden;position:relative}.visualizer .canvas{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.visualizer .action-panel-container{display:flex;position:absolute;right:30px;top:30px;z-index:2}.visualizer .stats-panel-container{align-items:center;bottom:0;display:flex;justify-content:center;pointer-events:none;position:absolute;right:30px;top:0;z-index:1}.visualizer .stats-panel-container .stats-panel .card--label,.visualizer .stats-panel-container .stats-panel .card--value{text-align:right}.visualizer .key-panel-container{bottom:30px;display:flex;justify-content:center;left:30px;pointer-events:none;position:absolute;right:30px;z-index:1}.visualizer .key-panel-container .key-panel{display:flex;flex-direction:row;flex-wrap:wrap;padding:16px}.visualizer .key-panel-container .key-panel .key-panel-item{align-items:center;display:flex;flex-direction:row;margin:0 16px}@media(max-width:1024px){.visualizer .key-panel-container .key-panel .key-panel-item{margin:0;width:110px}}.visualizer .key-panel-container .key-panel .key-panel-item .key-marker{border-radius:3px;height:12px;margin-right:10px;width:12px}.visualizer .key-panel-container .key-panel .key-panel-item .key-label{color:var(--text-color-secondary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;font-weight:500}.visualizer .info-panel-container{display:flex;left:30px;position:absolute;top:30px;width:320px;z-index:2}@media(max-width:480px){.visualizer .info-panel-container{left:10px;top:10px;width:90%}}.visualizer .info-panel-container .info-panel--key{border-radius:3px;height:16px;margin-right:10px;width:16px}.visualizer .vertex-state--unknown{background-color:#9aadce}.visualizer .vertex-state--pending{background-color:#ec9a1e}.visualizer .vertex-state--accepted{background-color:#f5f24f}.visualizer .vertex-state--confirmed{background-color:#5cfaff}.visualizer .vertex-state--finalized{background-color:#61e884}.visualizer .vertex-state--transaction{background-color:#c061e8}.visualizer .vertex-state--validation{background-color:#2260e7}.visualizer .vertex-state--tip{background-color:#d92121}.row{display:flex;flex-direction:row}.row.start{justify-content:flex-start}.row.middle{align-items:center}.row.end{justify-content:flex-end}.row.bottom{align-items:flex-end}.row.inline{display:inline-flex}.row.spread{justify-content:space-between}.row.wrap{flex-wrap:wrap}.col{display:flex;flex-direction:column}@media(max-width:480px){.col.phone-down-column,.row.phone-down-column{flex-direction:column}.col.start,.row.start{align-items:flex-start}}@media(max-width:768px){.col.tablet-down-column,.row.tablet-down-column{flex-direction:column}.col.start,.row.start{align-items:flex-start}}@media(max-width:768px)and (min-width:481px){.col.tablet-down-only-column,.row.tablet-down-only-column{flex-direction:column}.col.tablet-down-only-column.start,.row.tablet-down-only-column.start{align-items:flex-start}}@media(max-width:1024px){.col.desktop-down-column,.row.desktop-down-column{flex-direction:column}}@media(max-width:480px){.col.phone-down-row,.row.phone-down-row{flex-direction:row}}@media(max-width:768px){.col.tablet-down-row,.row.tablet-down-row{flex-direction:row}}@media(max-width:768px)and (min-width:481px){.col.tablet-down-only-row,.row.tablet-down-only-row{flex-direction:row}}@media(max-width:1024px){.col.desktop-down-row,.row.desktop-down-row{flex-direction:row}}.fill{flex:1 1}.margin-t-t{margin-top:10px}.margin-t-s{margin-top:16px}.margin-t-m{margin-top:24px}.margin-t-l{margin-top:32px}.margin-b-t{margin-bottom:10px}.margin-b-s{margin-bottom:16px}.margin-b-m{margin-bottom:24px}.margin-b-l{margin-bottom:32px}.margin-r-t{margin-right:10px}.margin-r-s{margin-right:16px}.margin-r-m{margin-right:24px}.margin-r-l{margin-right:32px}.margin-l-t{margin-left:10px}.margin-l-s{margin-left:16px}.margin-l-m{margin-left:24px}.margin-l-l{margin-left:32px}.padding-t{padding:10px}.padding-s{padding:16px}.padding-m{padding:24px}.padding-l{padding:32px}.padding-t-m{padding-top:24px}.padding-b-m{padding-bottom:24px}.padding-l-m{padding-left:24px}.padding-r-m{padding-right:24px}.padding-t-s{padding-top:16px}.padding-b-s{padding-bottom:16px}.padding-l-s{padding-left:16px}.padding-r-s{padding-right:16px}.padding-t-0{padding-top:0}.padding-b-0{padding-bottom:0}.padding-l-0{padding-left:0}.padding-r-0{padding-right:0}.padding-0{padding:0!important}.select-wrapper{display:inline-block;position:relative}.select-wrapper svg{color:var(--text-color-primary);pointer-events:none;position:absolute;right:18px;top:16px;z-index:2}.select-wrapper select{-webkit-appearance:none;appearance:none;background-color:transparent;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;height:40px;margin:0;outline:none;padding:0 48px 0 20px}.select-wrapper select:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.select-wrapper select:-ms-expand{display:none}.select-wrapper select:-moz-focusring{color:transparent;text-shadow:0 0 0 var(--text-color-primary)}.select-wrapper select option{background-color:var(--panel-background);color:var(--text-color-primary)}input{-webkit-appearance:none;appearance:none;background-color:transparent;border:1px solid var(--text-color-secondary);border-radius:8px;color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem;height:40px;margin:0;outline:none;padding:0 48px 0 20px}input:focus{box-shadow:0 0 3px 0 var(--accent-primary)}input:disabled{opacity:.5}input.input--stretch{width:100%}input[type=file]::-webkit-file-upload-button{display:none}input[type=file]::file-selector-button{display:none}.file-wrapper{display:inline-block;position:relative}.file-wrapper input{padding-left:30px}.file-wrapper svg{left:0;position:absolute;top:5px}@font-face{font-family:DM Sans;font-style:normal;font-weight:400;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-regular.9566aaac2083dccdc16e.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-regular.3b454dabbbc54e81472b.woff) format("woff")}@font-face{font-family:DM Sans;font-style:italic;font-weight:400;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-italic.ec0d193561f819682cad.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-italic.a8c70447613f107d41ce.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-weight:500;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-500.b50824fe4ff335be8c64.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-500.04c32ae08800337a4522.woff) format("woff")}@font-face{font-family:DM Sans;font-style:italic;font-weight:500;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-500italic.27b4c41ba7509c338a2e.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-500italic.07f59529a219a0932ea6.woff) format("woff")}@font-face{font-family:DM Sans;font-style:normal;font-weight:700;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-700.659104546f390e057efe.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-700.d5d2cff5228e83ca0dff.woff) format("woff")}@font-face{font-family:DM Sans;font-style:italic;font-weight:700;src:local(""),url(/dashboard/static/media/dm-sans-v6-latin-700italic.0b9a371cba3993d95273.woff2) format("woff2"),url(/dashboard/static/media/dm-sans-v6-latin-700italic.c24b3efb7a5a5e1052ac.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:300;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-300.e1de2ee312e829aaa425.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-300.bdbb6d895bbfd517ce5b.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:italic;font-weight:400;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-italic.1c4b3c62369a45fdc78f.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-italic.855a333e76f724107ca3.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-regular.c708fd4f02694c48059f.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-regular.12ead37cece64fd8fab0.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;src:local(""),url(/dashboard/static/media/ibm-plex-mono-v6-latin-500.1eeaa99b03ad926d0cd6.woff2) format("woff2"),url(/dashboard/static/media/ibm-plex-mono-v6-latin-500.67acf1407a576e8a8832.woff) format("woff")}.font-weight-bold{font-weight:700!important}.font-weight-normal{font-weight:400!important}.font-weight-light{font-weight:300!important}.font-italic{font-style:italic!important}h1{font-size:24px;font-size:1.5rem;white-space:nowrap}h1,h2{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-weight:700;text-decoration:none}h2{font-size:18px;font-size:1.125rem}h3{color:var(--text-color-primary);font-size:14px;font-size:.875rem;font-weight:700}h3,h4{font-family:DM Sans,sans-serif;text-decoration:none}h4{color:var(--text-color-secondary);font-size:10px;font-size:.625rem;font-weight:500;text-transform:uppercase}p{color:var(--text-color-primary);font-family:DM Sans,sans-serif;font-size:14px;font-size:.875rem}a{outline:0;text-decoration:none}a:focus{border-bottom:1px solid var(--accent-primary)}hr{background-color:var(--panel-border);border:0;height:1px;margin:24px 0}.secondary{color:var(--text-color-secondary)}.icon-button{background:none;border:0;border-radius:10px;cursor:pointer;outline:0;padding:10px}.icon-button:focus{box-shadow:0 0 3px 0 var(--accent-primary)}.word-break{word-break:break-word}.word-break-all{word-break:break-all}.hide-overflow{overflow:hidden}.d-none{display:none!important}.text-ellipsis{text-overflow:ellipsis}@media(max-width:480px){.phone-down-hide{display:none}}.theme-dark{--background:#22293e;--panel-background:#2b3659;--panel-border:#212a44;--panel-background-highlight:#353f60;--text-color-primary:#f1f4fa;--text-color-secondary:#9aadce;--accent-primary:#108cff;--bar-color-1:#309cff;--bar-color-2:#1f629f;--bar-color-3:#b7dcff;--bar-color-4:#e4f2ff;--scroll-thumb:#2b3659;--scroll-background:#212a44;--drop-shadow:#22293e;--dialog-shield:#aaa;--tooltip-background:#9aadce;--tooltip-text:#22293e}.theme-light{--background:#f6f9ff;--panel-background:#fff;--panel-background-highlight:#f6f8fc;--panel-border:#eef4ff;--text-color-primary:#25395f;--text-color-secondary:#9aadce;--accent-primary:#108cff;--bar-color-1:#309cff;--bar-color-2:#b7dcff;--bar-color-3:#1f629f;--bar-color-4:#0a3257;--scroll-thumb:#9aadce;--scroll-background:#fff;--drop-shadow:#aaa;--dialog-shield:#111;--tooltip-background:#9aadce;--tooltip-text:#fff}html{height:100%}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--background);display:flex;height:100vh;overflow:hidden}body #root{display:flex;flex:1 1}body #root .success{color:#28a745}body #root .warning{color:#ffc107}body #root .danger{color:#dc3545}body #root .info{color:#17a2b8}::-webkit-scrollbar-track{background-color:var(--scroll-background);border-radius:0}::-webkit-scrollbar{background-color:var(--scroll-background);width:12px}::-webkit-scrollbar-thumb{background-color:var(--scroll-thumb);border-radius:0} +/*# sourceMappingURL=main.077f73c0.css.map*/ \ No newline at end of file diff --git a/pkg/dashboard/frontend/static/css/main.077f73c0.css.map b/pkg/dashboard/frontend/static/css/main.077f73c0.css.map new file mode 100644 index 0000000..236750f --- /dev/null +++ b/pkg/dashboard/frontend/static/css/main.077f73c0.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.077f73c0.css","mappings":"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","sources":["app/App.scss","scss/media-queries.scss","app/components/layout/Header.scss","scss/variables.scss","app/components/layout/HealthIndicator.scss","app/components/layout/MicroGraph.scss","app/components/layout/NavMenu.scss","app/components/layout/NavPanel.scss","app/components/layout/Graph.scss","scss/fonts.scss","app/components/layout/InfoPanel.scss","app/components/layout/Tooltip.scss","app/components/tangle/PeersSummaryPanel.scss","app/routes/Home.scss","app/components/layout/Spinner.scss","app/components/layout/BlockButton.scss","app/routes/Peer.scss","app/components/layout/Dialog.scss","app/routes/Peers.scss","scss/card.scss","scss/fonts/dm-sans.scss","app/routes/Visualizer.scss","scss/layout.scss","scss/forms.scss","scss/fonts/ibm-plex-mono.scss","scss/standard.scss","scss/themes/dark.scss","scss/themes/light.scss","index.scss"],"sourcesContent":["@import \"../scss/media-queries\";\n@import \"../scss/variables\";\n\n.app {\n display: flex;\n flex: 1;\n flex-direction: row;\n align-items: stretch;\n min-width: 320px;\n overflow: hidden;\n\n .scroll-content {\n overflow: auto;\n }\n\n @include tablet-down {\n .health-indicators {\n padding: $spacing-small 20px;\n }\n }\n\n @include phone-down {\n .health-indicators {\n padding: $spacing-small 20px $spacing-small 66px;\n }\n }\n}\n","$desktop-width: 1024px;\n$tablet-width: 768px;\n$phone-width: 480px;\n\n@mixin desktop-down {\n @media (max-width: #{$desktop-width}) {\n @content;\n }\n}\n\n@mixin tablet-down {\n @media (max-width: #{$tablet-width}) {\n @content;\n }\n}\n\n@mixin tablet-down-only {\n @media (max-width: #{$tablet-width}) and (min-width: #{$phone-width + 1}) {\n @content;\n }\n}\n\n@mixin phone-down {\n @media (max-width: #{$phone-width}) {\n @content;\n }\n}\n\n@include phone-down {\n .phone-down-hide {\n display: none;\n }\n}\n","@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.header {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 80px;\n padding: $spacing-small;\n background-color: var(--panel-background);\n\n @include tablet-down {\n justify-content: flex-start;\n height: 60px;\n padding-left: 0;\n }\n\n @include phone-down {\n padding-left: $spacing-small;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: row;\n max-width: $content-width-desktop;\n\n .child {\n padding: $spacing-tiny $spacing-medium;\n border-right: 1px solid var(--panel-border);\n\n @include desktop-down {\n padding: $spacing-tiny;\n }\n\n &.child-fill {\n flex: 1;\n min-width: 250px;\n padding-right: 40px;\n\n @include tablet-down {\n min-width: unset;\n padding-right: 0;\n }\n }\n }\n }\n}\n","$content-width-desktop: 1080px;\n\n$spacing-tiny: 10px;\n$spacing-small: 16px;\n$spacing-medium: 24px;\n$spacing-large: 32px;\n\n$form-input-radius: 8px;\n\n$success: #28a745;\n$danger: #dc3545;\n$info: #17a2b8;\n$warning: #ffc107;\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.health-indicator {\n display: flex;\n align-items: center;\n\n .label {\n @include font-size(10px);\n\n margin-left: $spacing-small;\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.micro-graph {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n width: 130px;\n\n .label {\n @include font-size(10px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .value {\n @include font-size(16px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n white-space: nowrap;\n }\n\n .canvas {\n color: var(--accent-primary);\n\n svg {\n overflow: visible;\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.nav-menu {\n display: flex;\n align-items: center;\n\n button {\n border: 0;\n outline: 0;\n background: none;\n cursor: pointer;\n\n .logo {\n width: 28px;\n height: 28px;\n }\n }\n\n .popup-container {\n display: flex;\n position: fixed;\n z-index: 10;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n align-items: stretch;\n justify-content: stretch;\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.nav-panel {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n width: 120px;\n padding-top: 22px;\n overflow: auto;\n border-right: 1px solid var(--panel-border);\n background-color: var(--panel-background);\n\n @include tablet-down {\n padding-top: $spacing-small;\n }\n\n a {\n &:focus {\n border: 0;\n outline: none;\n }\n }\n\n .logo {\n width: 36px;\n height: 36px;\n\n @include tablet-down {\n width: 28px;\n height: 28px;\n }\n }\n\n .nav-panel-middle {\n display: flex;\n flex-direction: column;\n margin: $spacing-large 0;\n }\n\n .nav-panel-end {\n display: flex;\n flex-direction: column;\n margin: $spacing-large 0;\n }\n\n .nav-panel--button {\n @include font-size(12px);\n\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 50px;\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n cursor: pointer;\n\n &.nav-panel--button__selected {\n color: var(--accent-primary);\n }\n\n .nav-panel-button-label {\n margin-top: $spacing-tiny;\n }\n\n +.nav-panel--button {\n margin-top: $spacing-large;\n }\n }\n\n &.full-width {\n width: 100%;\n\n .nav-panel--button {\n flex-direction: row;\n\n .nav-panel-button-label {\n margin-top: 0;\n margin-left: $spacing-small;\n }\n\n +.nav-panel--button {\n margin-top: $spacing-small;\n }\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.graph {\n display: flex;\n flex: 1;\n flex-direction: column;\n\n .bar-color-1 {\n background-color: var(--bar-color-1);\n fill: var(--bar-color-1);\n }\n\n .bar-color-2 {\n background-color: var(--bar-color-2);\n fill: var(--bar-color-2);\n }\n\n .bar-color-3 {\n background-color: var(--bar-color-3);\n fill: var(--bar-color-3);\n }\n\n .bar-color-4 {\n background-color: var(--bar-color-4);\n fill: var(--bar-color-4);\n }\n\n .title-row {\n display: flex;\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: $spacing-large;\n\n .caption {\n @include font-size(10px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .key {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-left: $spacing-small;\n\n .key-color {\n width: $spacing-small;\n height: $spacing-tiny;\n border-radius: $spacing-tiny;\n }\n\n .key-label {\n @include font-size(10px);\n\n margin-left: $spacing-small;\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n }\n\n @include tablet-down {\n display: none;\n }\n }\n }\n\n .canvas {\n flex: 1;\n color: var(--accent-primary);\n\n svg {\n width: 100%;\n height: 200px;\n overflow: visible;\n\n .axis-label {\n @include font-size(10px);\n\n fill: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n }\n\n .axis-color {\n stroke: var(--text-color-secondary);\n opacity: 0.2;\n }\n }\n }\n}\n","/* stylelint-disable annotation-no-unknown */\n@import \"./fonts/dm-sans\";\n@import \"./fonts/ibm-plex-mono\";\n\n$font-sans: \"DM Sans\", sans-serif;\n$font-mono: \"IBM Plex Mono\", monospace;\n\n$rem-base-font: 16px !default;\n\n@mixin font-size($font-size, $line-height: 0) {\n font-size: $font-size;\n font-size: calc($font-size / $rem-base-font * 1rem);\n\n @if $line-height > 0 {\n line-height: $line-height;\n line-height: calc($line-height / $rem-base-font * 1rem);\n }\n}\n\n.font-weight-bold {\n font-weight: bold !important;\n}\n\n.font-weight-normal {\n font-weight: normal !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.info-panel {\n display: flex;\n flex: 1;\n flex-direction: row;\n height: 100px;\n width: 345px;\n\n @include phone-down {\n height: 80px;\n }\n\n .info--labels {\n flex: 1;\n justify-content: center;\n }\n\n .value {\n @include font-size(24px);\n\n margin-top: $spacing-tiny;\n overflow: hidden;\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n .value--small {\n @include font-size(14px);\n }\n\n .lmi {\n font-size: 14px;\n\n @include desktop-down {\n @include font-size(18px);\n }\n\n @include tablet-down {\n @include font-size(17px);\n }\n \n @include phone-down {\n @include font-size(16px);\n }\n }\n\n @include desktop-down {\n @include font-size(18px);\n }\n\n @include tablet-down {\n @include font-size(17px);\n }\n\n @include phone-down {\n @include font-size(16px);\n }\n }\n\n .icon-container {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 80px;\n margin-right: 20px;\n border-radius: $spacing-small;\n\n @include phone-down {\n width: 60px;\n height: 60px;\n }\n\n .icon-background {\n position: absolute;\n width: 80px;\n height: 80px;\n border-radius: $spacing-small;\n opacity: 0.1;\n\n @include phone-down {\n width: 60px;\n height: 60px;\n }\n\n &.icon-background--green {\n background-color: #16e1d5;\n }\n\n &.icon-background--orange {\n background-color: #ff8b5c;\n }\n\n &.icon-background--blue {\n background-color: #4baaff;\n }\n\n &.icon-background--purple {\n background-color: #666af6;\n }\n }\n\n svg {\n z-index: 1;\n flex: 1;\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n\n.tooltip {\n position: relative;\n display: flex;\n\n .tooltip__wrapper {\n visibility: hidden;\n position: absolute;\n top: 100%;\n margin-top: 10px;\n margin-left: 20px;\n padding: 12px;\n border-radius: 0.25rem;\n background: var(--tooltip-background);\n white-space: nowrap;\n color: var(--tooltip-text);\n z-index: 1;\n opacity: 0;\n transition: all 250ms;\n right: 0;\n width: 300px;\n text-align: center;\n white-space: break-spaces;\n font-family: $font-sans;\n word-break: keep-all;\n\n .tooltip__arrow {\n background: var(--tooltip-background);\n width: 12px;\n height: 12px;\n position: absolute;\n top: -6px;\n right: 150px;\n transform: rotate(45deg);\n }\n\n @include desktop-down {\n display: none;\n }\n\n @include tablet-down {\n display: none;\n }\n \n @include phone-down {\n display: none;\n }\n }\n\n .tooltip__children {\n white-space: nowrap;\n font-weight: 600;\n cursor: pointer;\n\n @include desktop-down {\n cursor: text;\n }\n\n @include tablet-down {\n cursor: text;\n }\n \n @include phone-down {\n cursor: text;\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.peers-summary {\n padding: $spacing-small;\n\n .peers-summary--icon-button {\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n .peers-summary--item {\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: 90px;\n margin-bottom: $spacing-small;\n padding: $spacing-small;\n overflow: hidden;\n border-radius: $spacing-small;\n background-color: var(--panel-background-highlight);\n\n &:focus {\n border: 0;\n }\n\n .peer-health-icon {\n width: 16px;\n }\n\n .peer-id {\n @include font-size(14px);\n\n margin-left: $spacing-small;\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: 500;\n word-break: break-all;\n }\n }\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.home {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 60px;\n\n @include desktop-down {\n padding: $spacing-small;\n }\n\n .content {\n flex: 1;\n max-width: $content-width-desktop;\n\n .banner {\n flex: 1;\n height: 140px;\n\n @include desktop-down {\n height: unset;\n }\n\n .node-info {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n padding: $spacing-small;\n\n @include desktop-down {\n * + .secondary {\n margin-top: $spacing-tiny;\n }\n }\n }\n\n .banner-curve {\n color: var(--panel-background-highlight);\n\n @include desktop-down {\n display: none;\n }\n }\n\n .banner-image {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n border-radius: 0 16px 16px 0;\n background-color: var(--panel-background-highlight);\n\n @include desktop-down {\n display: none;\n }\n }\n }\n\n .blocks-graph-panel {\n .graph {\n padding: 24px;\n }\n }\n\n .info-col {\n align-items: stretch;\n width: 66%;\n overflow: hidden;\n\n @include desktop-down {\n width: unset;\n }\n }\n\n .peers-summary-col {\n width: 33%;\n overflow: hidden;\n\n @include desktop-down {\n width: unset;\n }\n }\n\n .peers-summary-panel {\n margin-left: $spacing-small;\n\n @include desktop-down {\n margin-top: $spacing-small;\n margin-left: 0;\n }\n }\n\n .info-panel + .info-panel {\n margin-left: $spacing-small;\n\n @include tablet-down {\n margin-top: $spacing-small;\n margin-left: 0;\n }\n }\n }\n}\n","@import '../../../scss/variables';\n\n.spinner {\n position: relative;\n top: 20px;\n left: 20px;\n width: 40px;\n height: 40px;\n animation: pulse 1s ease-in-out infinite;\n border-radius: 100%;\n background-color: var(--text-color-secondary);\n\n &.spinner--compact {\n top: 10px;\n left: 10px;\n width: 20px;\n height: 20px;\n }\n}\n\n@keyframes pulse {\n 0% {\n transform: translate(-50%, -50%) scale(0);\n opacity: 1;\n }\n\n 100% {\n transform: translate(-50%, -50%) scale(1);\n opacity: 0;\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.block-button {\n position: relative;\n\n .block-button-btn {\n border: 0;\n outline: none;\n background: none;\n cursor: pointer;\n\n svg {\n color: var(--text-color-secondary);\n }\n\n &:hover {\n svg {\n color: var(--text-color-primary);\n }\n }\n\n &:focus {\n svg {\n color: var(--accent-primary);\n }\n }\n }\n\n .block-button--message {\n @include font-size(10px);\n\n position: absolute;\n min-width: 200px;\n animation: fade 2s linear;\n animation-fill-mode: forwards;\n opacity: 1;\n color: var(--accent-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-transform: uppercase;\n\n &.block-button--message--right {\n top: 3px;\n margin-left: 10px;\n }\n\n &.block-button--message--top {\n top: -15px;\n left: -10px;\n }\n }\n\n @keyframes fade {\n 0%,\n 100% {\n opacity: 0;\n }\n\n 50% {\n opacity: 1;\n }\n }\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.peer {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 60px;\n\n @include desktop-down {\n padding: $spacing-small;\n }\n\n .content {\n flex: 1;\n max-width: $content-width-desktop;\n\n .peer--icon-button {\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n .banner {\n .node-info {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n padding: $spacing-small;\n\n .block-button .block-button-btn svg {\n width: 16px;\n height: 16px;\n }\n }\n\n .health-indicators {\n justify-content: space-around;\n border-left: 1px solid var(--panel-border);\n\n .child {\n padding: 0 $spacing-small;\n }\n\n @include tablet-down-only {\n justify-content: space-between;\n margin: 0 $spacing-small;\n\n .child {\n padding: $spacing-small 0;\n }\n }\n\n @include phone-down {\n .child {\n padding: $spacing-tiny $spacing-small;\n }\n }\n }\n }\n\n .info {\n @include tablet-down {\n flex-direction: column;\n }\n\n .info-panel + .info-panel {\n margin-left: $spacing-small;\n\n @include tablet-down {\n margin-top: $spacing-small;\n margin-left: 0;\n }\n }\n }\n\n .blocks-graph-panel {\n .graph {\n padding: 24px;\n }\n }\n\n .gossip {\n padding: $spacing-small 0 0 $spacing-small;\n\n .gossip-item {\n width: 155px;\n height: 75px;\n margin-right: $spacing-small;\n\n @include desktop-down {\n width: 160px;\n }\n\n h4 {\n min-height: 30px;\n }\n\n .gossip-value {\n @include font-size(24px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n white-space: nowrap;\n }\n }\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.dialog-click-shield {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n opacity: 0.2;\n background: var(--dialog-shield);\n}\n\n.dialog-container {\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n align-items: center;\n justify-content: center;\n\n .dialog {\n display: flex;\n flex-direction: column;\n width: 500px;\n min-height: 400px;\n max-height: 800px;\n padding: 20px;\n border: 1px solid var(--panel-border);\n border-radius: 10px;\n background: var(--panel-background);\n box-shadow: 5px 5px 5px 0 var(--drop-shadow);\n\n @include tablet-down {\n min-width: 90%;\n }\n\n .dialog-header {\n margin-bottom: 20px;\n border-bottom: 1px solid var(--panel-border);\n }\n\n .dialog-content {\n flex: 1;\n\n .dialog--label {\n @include font-size(10px);\n\n margin-top: $spacing-small;\n margin-bottom: calc($spacing-tiny / 2);\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n }\n\n .dialog-footer {\n display: flex;\n justify-content: flex-end;\n\n button {\n @include font-size(14px);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: $spacing-medium;\n padding: 6px 12px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: 0;\n background: none;\n color: var(--text-color-primary);\n font-family: $font-sans;\n cursor: pointer;\n\n +button {\n margin-left: $spacing-small;\n }\n\n &:hover {\n color: var(--accent-primary);\n }\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n }\n }\n }\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.peers {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 60px;\n\n @include desktop-down {\n padding: $spacing-small;\n }\n\n .content {\n flex: 1;\n max-width: $content-width-desktop;\n\n .peers--icon-button {\n margin-right: $spacing-small;\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n .add-button {\n @include font-size(14px);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 6px 12px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: 0;\n background: var(--bar-color-2);\n color: var(--text-color-primary);\n font-family: $font-sans;\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n }\n\n .peers-panel {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n\n @media (max-width: 1340px) {\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .peers-panel--item {\n width: calc($content-width-desktop / 2 - $spacing-small / 2);\n margin-top: $spacing-small;\n overflow: hidden;\n\n @media (max-width: 1340px) {\n width: 100%;\n }\n\n .card {\n padding: $spacing-large;\n\n .peer-health {\n width: 16px;\n height: 16px;\n margin-right: $spacing-small;\n }\n\n .peer-id {\n @include font-size(14px);\n\n @media (min-width: 1340px) {\n @include font-size(12px);\n }\n\n display: flex;\n flex-direction: column;\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: 500;\n }\n\n .graph {\n margin-top: 24px;\n }\n\n .peer-actions {\n justify-content: space-between;\n margin-top: $spacing-small;\n\n @media (max-width: 720px) {\n flex-direction: column;\n\n .card--action {\n justify-content: center;\n }\n\n p {\n display: flex;\n justify-content: center;\n }\n }\n }\n }\n }\n }\n }\n}\n","/* stylelint-disable selector-class-pattern, function-no-unknown */\n@import \"./fonts\";\n@import \"./variables\";\n@import \"./media-queries\";\n\n.card {\n padding: 10px;\n border: 1px solid var(--panel-border);\n border-radius: 16px;\n background-color: var(--panel-background);\n\n &.card__flat {\n border-radius: 0;\n }\n\n .card--header {\n display: flex;\n flex-direction: row;\n align-items: center;\n color: var(--text-color-primary);\n }\n\n .card--header-count {\n @include font-size(12px);\n\n display: flex;\n align-items: center;\n height: 24px;\n margin-left: 20px;\n padding: 0 8px;\n border-radius: 6px;\n background-color: var(--background);\n color: var(--accent-primary);\n font-family: $font-sans;\n font-weight: bold;\n white-space: nowrap;\n }\n\n .card--label {\n @include font-size(10px);\n\n margin-top: $spacing-small;\n margin-bottom: calc($spacing-tiny / 2);\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .card--value {\n @include font-size(14px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n word-break: break-all;\n\n a {\n color: var(--accent-primary);\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .card--value--button {\n border: 0;\n outline: 0;\n background: none;\n color: var(--accent-primary);\n cursor: pointer;\n }\n\n &.card--value__mono {\n font-family: $font-mono;\n }\n\n &.card--value-textarea {\n @include font-size(12px);\n\n min-height: 150px;\n max-height: 150px;\n padding: 10px;\n overflow: auto;\n background: var(--panel-border);\n font-family: $font-mono;\n\n &.card--value-textarea__utf8 {\n max-height: 350px;\n white-space: pre-wrap;\n }\n\n &.card--value-textarea__hex {\n max-height: 350px;\n word-break: break-word;\n white-space: pre-wrap;\n }\n\n &.card--value-textarea__json {\n max-height: 350px;\n white-space: pre-wrap;\n }\n\n &.card--value-textarea__fit {\n min-height: auto;\n }\n }\n }\n\n .card--content {\n padding: 0 30px 20px;\n\n @include phone-down {\n padding: 15px 20px;\n }\n\n input {\n padding: 0 20px;\n }\n\n .card--content--border-l {\n padding-left: 16px;\n border-left: 1px solid var(--text-color-primary);\n }\n\n .card--content__input {\n display: flex;\n align-items: center;\n\n .card--content__input--dropdown {\n margin-left: -2px;\n cursor: pointer;\n\n svg {\n transition: transform 0.25s ease;\n\n path {\n fill: var(--text-color-primary);\n }\n }\n\n &.opened > svg {\n transform: rotate(90deg);\n }\n }\n\n .card--content__input--label {\n cursor: pointer;\n }\n }\n }\n\n .card--action {\n @include font-size(14px);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 6px 12px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: 0;\n background: none;\n color: var(--text-color-primary);\n font-family: $font-sans;\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n\n &.card--action-plain {\n border: 0;\n color: var(--text-color-secondary);\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n &.card--action-danger {\n background-color: transparentize($danger, 0.9);\n }\n\n &.card--action-primary {\n background-color: var(--accent-primary);\n color: #ffffff;\n\n &:hover {\n color: #ffffff;\n }\n }\n }\n}\n","@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-regular.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-regular.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-italic.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-italic.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 500;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 500;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500italic.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500italic.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 700;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 700;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700italic.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700italic.woff') format('woff');\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.visualizer {\n display: flex;\n position: relative;\n flex: 1;\n height: 100%;\n overflow: hidden;\n\n .canvas {\n position: absolute;\n z-index: 0;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n .action-panel-container {\n display: flex;\n position: absolute;\n z-index: 2;\n top: 30px;\n right: 30px;\n }\n\n .stats-panel-container {\n display: flex;\n position: absolute;\n z-index: 1;\n top: 0;\n right: 30px;\n bottom: 0;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n\n .stats-panel {\n .card--value,\n .card--label {\n text-align: right;\n }\n }\n }\n\n .key-panel-container {\n display: flex;\n position: absolute;\n z-index: 1;\n right: 30px;\n bottom: 30px;\n left: 30px;\n justify-content: center;\n pointer-events: none;\n\n .key-panel {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n padding: $spacing-small;\n\n .key-panel-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0 $spacing-small;\n\n @include desktop-down {\n width: 110px;\n margin: 0;\n }\n\n .key-marker {\n width: 12px;\n height: 12px;\n margin-right: $spacing-tiny;\n border-radius: 3px;\n }\n\n .key-label {\n @include font-size(14px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n }\n }\n }\n }\n\n .info-panel-container {\n display: flex;\n position: absolute;\n z-index: 2;\n top: 30px;\n left: 30px;\n width: 320px;\n\n @include phone-down {\n top: 10px;\n left: 10px;\n width: 90%;\n }\n\n .info-panel--key {\n width: 16px;\n height: 16px;\n margin-right: $spacing-tiny;\n border-radius: 3px;\n }\n }\n\n .vertex-state--unknown {\n background-color: #9aadce;\n }\n\n .vertex-state--pending {\n background-color: #ec9a1e;\n }\n\n .vertex-state--accepted {\n background-color: #f5f24f;\n }\n\n .vertex-state--confirmed {\n background-color: #5cfaff;\n }\n\n .vertex-state--finalized {\n background-color: #61e884;\n }\n\n .vertex-state--transaction {\n background-color: #c061e8;\n }\n\n .vertex-state--validation {\n background-color: #2260e7;\n }\n\n .vertex-state--tip {\n background-color: #d92121;\n }\n}\n","@import \"./variables\";\n@import \"./media-queries\";\n\n.row {\n display: flex;\n flex-direction: row;\n\n &.start {\n justify-content: flex-start;\n }\n\n &.middle {\n align-items: center;\n }\n\n &.end {\n justify-content: flex-end;\n }\n\n &.bottom {\n align-items: flex-end;\n }\n\n &.inline {\n display: inline-flex;\n }\n\n &.spread {\n justify-content: space-between;\n }\n\n &.wrap {\n flex-wrap: wrap;\n }\n}\n\n.col {\n display: flex;\n flex-direction: column;\n}\n\n.col,\n.row {\n @include phone-down {\n &.phone-down-column {\n flex-direction: column;\n }\n\n &.start {\n align-items: flex-start;\n }\n }\n\n @include tablet-down {\n &.tablet-down-column {\n flex-direction: column;\n }\n\n &.start {\n align-items: flex-start;\n }\n }\n\n @include tablet-down-only {\n &.tablet-down-only-column {\n flex-direction: column;\n\n &.start {\n align-items: flex-start;\n }\n }\n }\n\n @include desktop-down {\n &.desktop-down-column {\n flex-direction: column;\n }\n }\n\n @include phone-down {\n &.phone-down-row {\n flex-direction: row;\n }\n }\n\n @include tablet-down {\n &.tablet-down-row {\n flex-direction: row;\n }\n }\n\n @include tablet-down-only {\n &.tablet-down-only-row {\n flex-direction: row;\n }\n }\n\n @include desktop-down {\n &.desktop-down-row {\n flex-direction: row;\n }\n }\n}\n\n.fill {\n flex: 1;\n}\n\n.margin-t-t {\n margin-top: $spacing-tiny;\n}\n\n.margin-t-s {\n margin-top: $spacing-small;\n}\n\n.margin-t-m {\n margin-top: $spacing-medium;\n}\n\n.margin-t-l {\n margin-top: $spacing-large;\n}\n\n.margin-b-t {\n margin-bottom: $spacing-tiny;\n}\n\n.margin-b-s {\n margin-bottom: $spacing-small;\n}\n\n.margin-b-m {\n margin-bottom: $spacing-medium;\n}\n\n.margin-b-l {\n margin-bottom: $spacing-large;\n}\n\n.margin-r-t {\n margin-right: $spacing-tiny;\n}\n\n.margin-r-s {\n margin-right: $spacing-small;\n}\n\n.margin-r-m {\n margin-right: $spacing-medium;\n}\n\n.margin-r-l {\n margin-right: $spacing-large;\n}\n\n.margin-l-t {\n margin-left: $spacing-tiny;\n}\n\n.margin-l-s {\n margin-left: $spacing-small;\n}\n\n.margin-l-m {\n margin-left: $spacing-medium;\n}\n\n.margin-l-l {\n margin-left: $spacing-large;\n}\n\n.padding-t {\n padding: $spacing-tiny;\n}\n\n.padding-s {\n padding: $spacing-small;\n}\n\n.padding-m {\n padding: $spacing-medium;\n}\n\n.padding-l {\n padding: $spacing-large;\n}\n\n.padding-t-m {\n padding-top: $spacing-medium;\n}\n\n.padding-b-m {\n padding-bottom: $spacing-medium;\n}\n\n.padding-l-m {\n padding-left: $spacing-medium;\n}\n\n.padding-r-m {\n padding-right: $spacing-medium;\n}\n\n.padding-t-s {\n padding-top: $spacing-small;\n}\n\n.padding-b-s {\n padding-bottom: $spacing-small;\n}\n\n.padding-l-s {\n padding-left: $spacing-small;\n}\n\n.padding-r-s {\n padding-right: $spacing-small;\n}\n\n.padding-t-0 {\n padding-top: 0;\n}\n\n.padding-b-0 {\n padding-bottom: 0;\n}\n\n.padding-l-0 {\n padding-left: 0;\n}\n\n.padding-r-0 {\n padding-right: 0;\n}\n\n.padding-0 {\n padding: 0 !important;\n}\n","/* stylelint-disable selector-class-pattern */\n@import \"./fonts\";\n@import \"./variables\";\n\n.select-wrapper {\n display: inline-block;\n position: relative;\n\n svg {\n position: absolute;\n z-index: 2;\n top: 16px;\n right: 18px;\n color: var(--text-color-primary);\n pointer-events: none;\n }\n\n select {\n @include font-size(14px);\n\n height: 40px;\n margin: 0;\n padding: 0 48px 0 20px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: none;\n background-color: transparent;\n color: var(--text-color-primary);\n font-family: $font-sans;\n appearance: none;\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:-ms-expand {\n display: none;\n }\n\n &:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--text-color-primary);\n }\n\n option {\n background-color: var(--panel-background);\n color: var(--text-color-primary);\n }\n }\n}\n\ninput {\n @include font-size(14px);\n\n height: 40px;\n margin: 0;\n padding: 0 48px 0 20px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: none;\n background-color: transparent;\n color: var(--text-color-primary);\n font-family: $font-sans;\n appearance: none;\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n }\n\n &.input--stretch {\n width: 100%;\n }\n}\n\ninput[type=\"file\"]::file-selector-button {\n display: none;\n}\n\n.file-wrapper {\n display: inline-block;\n position: relative;\n\n input {\n padding-left: 30px;\n }\n\n svg {\n position: absolute;\n top: 5px;\n left: 0;\n }\n}\n","@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 300;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-300.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-300.woff') format('woff');\n}\n\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: italic;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-italic.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-italic.woff') format('woff');\n}\n\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-regular.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-regular.woff') format('woff');\n}\n\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-500.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-500.woff') format('woff');\n}\n","@import \"./fonts\";\n@import \"./variables\";\n\nh1 {\n @include font-size(24px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n white-space: nowrap;\n}\n\nh2 {\n @include font-size(18px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n}\n\nh3 {\n @include font-size(14px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n}\n\nh4 {\n @include font-size(10px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-decoration: none;\n text-transform: uppercase;\n}\n\np {\n @include font-size(14px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n}\n\na {\n outline: 0;\n text-decoration: none;\n\n &:focus {\n border-bottom: 1px solid var(--accent-primary);\n }\n}\n\nhr {\n height: 1px;\n margin: $spacing-medium 0;\n border: 0;\n background-color: var(--panel-border);\n}\n\n.secondary {\n color: var(--text-color-secondary);\n}\n\n.icon-button {\n padding: $spacing-tiny;\n border: 0;\n border-radius: $spacing-tiny;\n outline: 0;\n background: none;\n cursor: pointer;\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n}\n\n.word-break {\n word-break: break-word;\n}\n\n.word-break-all {\n word-break: break-all;\n}\n\n.hide-overflow {\n overflow: hidden;\n}\n\n.d-none {\n display: none !important;\n}\n\n.text-ellipsis {\n text-overflow: ellipsis;\n}\n",".theme-dark {\n --background: #22293e;\n --panel-background: #2b3659;\n --panel-border: #212a44;\n --panel-background-highlight: #353f60;\n --text-color-primary: #f1f4fa;\n --text-color-secondary: #9aadce;\n --accent-primary: #108cff;\n --bar-color-1: #309cff;\n --bar-color-2: #1f629f;\n --bar-color-3: #b7dcff;\n --bar-color-4: #e4f2ff;\n --scroll-thumb: #2b3659;\n --scroll-background: #212a44;\n --drop-shadow: #22293e;\n --dialog-shield: #aaaaaa;\n --tooltip-background: #9aadce;\n --tooltip-text: #22293e;\n}\n",".theme-light {\n --background: #f6f9ff;\n --panel-background: #ffffff;\n --panel-background-highlight: #f6f8fc;\n --panel-border: #eef4ff;\n --text-color-primary: #25395f;\n --text-color-secondary: #9aadce;\n --accent-primary: #108cff;\n --bar-color-1: #309cff;\n --bar-color-2: #b7dcff;\n --bar-color-3: #1f629f;\n --bar-color-4: #0a3257;\n --scroll-thumb: #9aadce;\n --scroll-background: #ffffff;\n --drop-shadow: #aaaaaa;\n --dialog-shield: #111111;\n --tooltip-background: #9aadce;\n --tooltip-text: #ffffff;\n}\n","@import './scss/layout';\n@import './scss/forms';\n@import './scss/standard';\n@import './scss/media-queries';\n@import './scss/themes/dark';\n@import './scss/themes/light';\n@import './scss/variables';\n\nhtml {\n height: 100%;\n}\n\n* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n display: flex;\n height: 100vh;\n overflow: hidden;\n background-color: var(--background);\n\n #root {\n display: flex;\n flex: 1;\n\n .success {\n color: $success;\n }\n\n .warning {\n color: $warning;\n }\n\n .danger {\n color: $danger;\n }\n\n .info {\n color: $info;\n }\n }\n}\n\n::-webkit-scrollbar-track {\n border-radius: 0;\n background-color: var(--scroll-background);\n}\n\n::-webkit-scrollbar {\n width: 12px;\n background-color: var(--scroll-background);\n}\n\n::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--scroll-thumb);\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/pkg/dashboard/frontend/static/css/main.37fcc5fd.css.map b/pkg/dashboard/frontend/static/css/main.37fcc5fd.css.map deleted file mode 100644 index abfd07f..0000000 --- a/pkg/dashboard/frontend/static/css/main.37fcc5fd.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.37fcc5fd.css","mappings":"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","sources":["app/App.scss","scss/media-queries.scss","app/components/layout/Header.scss","scss/variables.scss","app/components/layout/HealthIndicator.scss","app/components/layout/MicroGraph.scss","app/components/layout/NavMenu.scss","app/components/layout/NavPanel.scss","app/components/layout/Graph.scss","scss/fonts.scss","app/components/layout/InfoPanel.scss","app/components/layout/Tooltip.scss","app/components/tangle/PeersSummaryPanel.scss","app/routes/Home.scss","app/components/layout/Spinner.scss","app/components/layout/BlockButton.scss","app/routes/Peer.scss","app/components/layout/Dialog.scss","app/routes/Peers.scss","scss/card.scss","scss/fonts/dm-sans.scss","app/routes/Visualizer.scss","scss/layout.scss","scss/forms.scss","scss/fonts/ibm-plex-mono.scss","scss/standard.scss","scss/themes/dark.scss","scss/themes/light.scss","index.scss"],"sourcesContent":["@import \"../scss/media-queries\";\n@import \"../scss/variables\";\n\n.app {\n display: flex;\n flex: 1;\n flex-direction: row;\n align-items: stretch;\n min-width: 320px;\n overflow: hidden;\n\n .scroll-content {\n overflow: auto;\n }\n\n @include tablet-down {\n .health-indicators {\n padding: $spacing-small 20px;\n }\n }\n\n @include phone-down {\n .health-indicators {\n padding: $spacing-small 20px $spacing-small 66px;\n }\n }\n}\n","$desktop-width: 1024px;\n$tablet-width: 768px;\n$phone-width: 480px;\n\n@mixin desktop-down {\n @media (max-width: #{$desktop-width}) {\n @content;\n }\n}\n\n@mixin tablet-down {\n @media (max-width: #{$tablet-width}) {\n @content;\n }\n}\n\n@mixin tablet-down-only {\n @media (max-width: #{$tablet-width}) and (min-width: #{$phone-width + 1}) {\n @content;\n }\n}\n\n@mixin phone-down {\n @media (max-width: #{$phone-width}) {\n @content;\n }\n}\n\n@include phone-down {\n .phone-down-hide {\n display: none;\n }\n}\n","@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.header {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 80px;\n padding: $spacing-small;\n background-color: var(--panel-background);\n\n @include tablet-down {\n justify-content: flex-start;\n height: 60px;\n padding-left: 0;\n }\n\n @include phone-down {\n padding-left: $spacing-small;\n }\n\n .content {\n display: flex;\n flex: 1;\n flex-direction: row;\n max-width: $content-width-desktop;\n\n .child {\n padding: $spacing-tiny $spacing-medium;\n border-right: 1px solid var(--panel-border);\n\n @include desktop-down {\n padding: $spacing-tiny;\n }\n\n &.child-fill {\n flex: 1;\n min-width: 250px;\n padding-right: 40px;\n\n @include tablet-down {\n min-width: unset;\n padding-right: 0;\n }\n }\n }\n }\n}\n","$content-width-desktop: 1080px;\n\n$spacing-tiny: 10px;\n$spacing-small: 16px;\n$spacing-medium: 24px;\n$spacing-large: 32px;\n\n$form-input-radius: 8px;\n\n$success: #28a745;\n$danger: #dc3545;\n$info: #17a2b8;\n$warning: #ffc107;\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.health-indicator {\n display: flex;\n align-items: center;\n\n .label {\n @include font-size(10px);\n\n margin-left: $spacing-small;\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.micro-graph {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n width: 130px;\n\n .label {\n @include font-size(10px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .value {\n @include font-size(16px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-transform: uppercase;\n white-space: nowrap;\n }\n\n .canvas {\n color: var(--accent-primary);\n\n svg {\n overflow: visible;\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.nav-menu {\n display: flex;\n align-items: center;\n\n button {\n border: 0;\n outline: 0;\n background: none;\n cursor: pointer;\n\n .logo {\n width: 28px;\n height: 28px;\n }\n }\n\n .popup-container {\n display: flex;\n position: fixed;\n z-index: 10;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n align-items: stretch;\n justify-content: stretch;\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.nav-panel {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: space-between;\n width: 120px;\n padding-top: 22px;\n overflow: auto;\n border-right: 1px solid var(--panel-border);\n background-color: var(--panel-background);\n\n @include tablet-down {\n padding-top: $spacing-small;\n }\n\n a {\n &:focus {\n border: 0;\n outline: none;\n }\n }\n\n .logo {\n width: 36px;\n height: 36px;\n\n @include tablet-down {\n width: 28px;\n height: 28px;\n }\n }\n\n .nav-panel-middle {\n display: flex;\n flex-direction: column;\n margin: $spacing-large 0;\n }\n\n .nav-panel-end {\n display: flex;\n flex-direction: column;\n margin: $spacing-large 0;\n }\n\n .nav-panel--button {\n @include font-size(12px);\n\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 50px;\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n cursor: pointer;\n\n &.nav-panel--button__selected {\n color: var(--accent-primary);\n }\n\n .nav-panel-button-label {\n margin-top: $spacing-tiny;\n }\n\n +.nav-panel--button {\n margin-top: $spacing-large;\n }\n }\n\n &.full-width {\n width: 100%;\n\n .nav-panel--button {\n flex-direction: row;\n\n .nav-panel-button-label {\n margin-top: 0;\n margin-left: $spacing-small;\n }\n\n +.nav-panel--button {\n margin-top: $spacing-small;\n }\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.graph {\n display: flex;\n flex: 1;\n flex-direction: column;\n\n .bar-color-1 {\n background-color: var(--bar-color-1);\n fill: var(--bar-color-1);\n }\n\n .bar-color-2 {\n background-color: var(--bar-color-2);\n fill: var(--bar-color-2);\n }\n\n .bar-color-3 {\n background-color: var(--bar-color-3);\n fill: var(--bar-color-3);\n }\n\n .bar-color-4 {\n background-color: var(--bar-color-4);\n fill: var(--bar-color-4);\n }\n\n .title-row {\n display: flex;\n flex: 1;\n flex-direction: row;\n justify-content: space-between;\n margin-bottom: $spacing-large;\n\n .caption {\n @include font-size(10px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .key {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-left: $spacing-small;\n\n .key-color {\n width: $spacing-small;\n height: $spacing-tiny;\n border-radius: $spacing-tiny;\n }\n\n .key-label {\n @include font-size(10px);\n\n margin-left: $spacing-small;\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n }\n\n @include tablet-down {\n display: none;\n }\n }\n }\n\n .canvas {\n flex: 1;\n color: var(--accent-primary);\n\n svg {\n width: 100%;\n height: 200px;\n overflow: visible;\n\n .axis-label {\n @include font-size(10px);\n\n fill: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n }\n\n .axis-color {\n stroke: var(--text-color-secondary);\n opacity: 0.2;\n }\n }\n }\n}\n","/* stylelint-disable annotation-no-unknown */\n@import \"./fonts/dm-sans\";\n@import \"./fonts/ibm-plex-mono\";\n\n$font-sans: \"DM Sans\", sans-serif;\n$font-mono: \"IBM Plex Mono\", monospace;\n\n$rem-base-font: 16px !default;\n\n@mixin font-size($font-size, $line-height: 0) {\n font-size: $font-size;\n font-size: calc($font-size / $rem-base-font * 1rem);\n\n @if $line-height > 0 {\n line-height: $line-height;\n line-height: calc($line-height / $rem-base-font * 1rem);\n }\n}\n\n.font-weight-bold {\n font-weight: bold !important;\n}\n\n.font-weight-normal {\n font-weight: normal !important;\n}\n\n.font-weight-light {\n font-weight: 300 !important;\n}\n\n.font-italic {\n font-style: italic !important;\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.info-panel {\n display: flex;\n flex: 1;\n flex-direction: row;\n height: 100px;\n width: 345px;\n\n @include phone-down {\n height: 80px;\n }\n\n .info--labels {\n flex: 1;\n justify-content: center;\n }\n\n .value {\n @include font-size(24px);\n\n margin-top: $spacing-tiny;\n overflow: hidden;\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n .value--small {\n @include font-size(14px);\n }\n\n .lmi {\n font-size: 14px;\n\n @include desktop-down {\n @include font-size(18px);\n }\n\n @include tablet-down {\n @include font-size(17px);\n }\n \n @include phone-down {\n @include font-size(16px);\n }\n }\n\n @include desktop-down {\n @include font-size(18px);\n }\n\n @include tablet-down {\n @include font-size(17px);\n }\n\n @include phone-down {\n @include font-size(16px);\n }\n }\n\n .icon-container {\n display: flex;\n position: relative;\n align-items: center;\n justify-content: center;\n width: 80px;\n height: 80px;\n margin-right: 20px;\n border-radius: $spacing-small;\n\n @include phone-down {\n width: 60px;\n height: 60px;\n }\n\n .icon-background {\n position: absolute;\n width: 80px;\n height: 80px;\n border-radius: $spacing-small;\n opacity: 0.1;\n\n @include phone-down {\n width: 60px;\n height: 60px;\n }\n\n &.icon-background--green {\n background-color: #16e1d5;\n }\n\n &.icon-background--orange {\n background-color: #ff8b5c;\n }\n\n &.icon-background--blue {\n background-color: #4baaff;\n }\n\n &.icon-background--purple {\n background-color: #666af6;\n }\n }\n\n svg {\n z-index: 1;\n flex: 1;\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n\n.tooltip {\n position: relative;\n display: flex;\n\n .tooltip__wrapper {\n visibility: hidden;\n position: absolute;\n top: 100%;\n margin-top: 10px;\n margin-left: 20px;\n padding: 12px;\n border-radius: 0.25rem;\n background: var(--tooltip-background);\n white-space: nowrap;\n color: var(--tooltip-text);\n z-index: 1;\n opacity: 0;\n transition: all 250ms;\n right: 0;\n width: 300px;\n text-align: center;\n white-space: break-spaces;\n font-family: $font-sans;\n word-break: keep-all;\n\n .tooltip__arrow {\n background: var(--tooltip-background);\n width: 12px;\n height: 12px;\n position: absolute;\n top: -6px;\n right: 150px;\n transform: rotate(45deg);\n }\n\n @include desktop-down {\n display: none;\n }\n\n @include tablet-down {\n display: none;\n }\n \n @include phone-down {\n display: none;\n }\n }\n\n .tooltip__children {\n white-space: nowrap;\n font-weight: 600;\n cursor: pointer;\n\n @include desktop-down {\n cursor: text;\n }\n\n @include tablet-down {\n cursor: text;\n }\n \n @include phone-down {\n cursor: text;\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.peers-summary {\n padding: $spacing-small;\n\n .peers-summary--icon-button {\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n .peers-summary--item {\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: 90px;\n margin-bottom: $spacing-small;\n padding: $spacing-small;\n overflow: hidden;\n border-radius: $spacing-small;\n background-color: var(--panel-background-highlight);\n\n &:focus {\n border: 0;\n }\n\n .peer-health-icon {\n width: 16px;\n }\n\n .peer-id {\n @include font-size(14px);\n\n margin-left: $spacing-small;\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: 500;\n word-break: break-all;\n }\n }\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.home {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 60px;\n\n @include desktop-down {\n padding: $spacing-small;\n }\n\n .content {\n flex: 1;\n max-width: $content-width-desktop;\n\n .banner {\n flex: 1;\n height: 140px;\n\n @include desktop-down {\n height: unset;\n }\n\n .node-info {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n padding: $spacing-small;\n\n @include desktop-down {\n * + .secondary {\n margin-top: $spacing-tiny;\n }\n }\n }\n\n .banner-curve {\n color: var(--panel-background-highlight);\n\n @include desktop-down {\n display: none;\n }\n }\n\n .banner-image {\n display: flex;\n flex: 1;\n align-items: center;\n justify-content: center;\n border-radius: 0 16px 16px 0;\n background-color: var(--panel-background-highlight);\n\n @include desktop-down {\n display: none;\n }\n }\n }\n\n .blocks-graph-panel {\n .graph {\n padding: 24px;\n }\n }\n\n .info-col {\n align-items: stretch;\n width: 66%;\n overflow: hidden;\n\n @include desktop-down {\n width: unset;\n }\n }\n\n .peers-summary-col {\n width: 33%;\n overflow: hidden;\n\n @include desktop-down {\n width: unset;\n }\n }\n\n .peers-summary-panel {\n margin-left: $spacing-small;\n\n @include desktop-down {\n margin-top: $spacing-small;\n margin-left: 0;\n }\n }\n\n .info-panel + .info-panel {\n margin-left: $spacing-small;\n\n @include tablet-down {\n margin-top: $spacing-small;\n margin-left: 0;\n }\n }\n }\n}\n","@import '../../../scss/variables';\n\n.spinner {\n position: relative;\n top: 20px;\n left: 20px;\n width: 40px;\n height: 40px;\n animation: pulse 1s ease-in-out infinite;\n border-radius: 100%;\n background-color: var(--text-color-secondary);\n\n &.spinner--compact {\n top: 10px;\n left: 10px;\n width: 20px;\n height: 20px;\n }\n}\n\n@keyframes pulse {\n 0% {\n transform: translate(-50%, -50%) scale(0);\n opacity: 1;\n }\n\n 100% {\n transform: translate(-50%, -50%) scale(1);\n opacity: 0;\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/variables';\n\n.block-button {\n position: relative;\n\n .block-button-btn {\n border: 0;\n outline: none;\n background: none;\n cursor: pointer;\n\n svg {\n color: var(--text-color-secondary);\n }\n\n &:hover {\n svg {\n color: var(--text-color-primary);\n }\n }\n\n &:focus {\n svg {\n color: var(--accent-primary);\n }\n }\n }\n\n .block-button--message {\n @include font-size(10px);\n\n position: absolute;\n min-width: 200px;\n animation: fade 2s linear;\n animation-fill-mode: forwards;\n opacity: 1;\n color: var(--accent-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-transform: uppercase;\n\n &.block-button--message--right {\n top: 3px;\n margin-left: 10px;\n }\n\n &.block-button--message--top {\n top: -15px;\n left: -10px;\n }\n }\n\n @keyframes fade {\n 0%,\n 100% {\n opacity: 0;\n }\n\n 50% {\n opacity: 1;\n }\n }\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.peer {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 60px;\n\n @include desktop-down {\n padding: $spacing-small;\n }\n\n .content {\n flex: 1;\n max-width: $content-width-desktop;\n\n .peer--icon-button {\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n .banner {\n .node-info {\n display: flex;\n flex: 1;\n flex-direction: column;\n justify-content: space-between;\n padding: $spacing-small;\n\n .block-button .block-button-btn svg {\n width: 16px;\n height: 16px;\n }\n }\n\n .health-indicators {\n justify-content: space-around;\n border-left: 1px solid var(--panel-border);\n\n .child {\n padding: 0 $spacing-small;\n }\n\n @include tablet-down-only {\n justify-content: space-between;\n margin: 0 $spacing-small;\n\n .child {\n padding: $spacing-small 0;\n }\n }\n\n @include phone-down {\n .child {\n padding: $spacing-tiny $spacing-small;\n }\n }\n }\n }\n\n .info {\n @include tablet-down {\n flex-direction: column;\n }\n\n .info-panel + .info-panel {\n margin-left: $spacing-small;\n\n @include tablet-down {\n margin-top: $spacing-small;\n margin-left: 0;\n }\n }\n }\n\n .blocks-graph-panel {\n .graph {\n padding: 24px;\n }\n }\n\n .gossip {\n padding: $spacing-small 0 0 $spacing-small;\n\n .gossip-item {\n width: 155px;\n height: 75px;\n margin-right: $spacing-small;\n\n @include desktop-down {\n width: 160px;\n }\n\n h4 {\n min-height: 30px;\n }\n\n .gossip-value {\n @include font-size(24px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n white-space: nowrap;\n }\n }\n }\n }\n}\n","@import '../../../scss/fonts';\n@import '../../../scss/media-queries';\n@import '../../../scss/variables';\n\n.dialog-click-shield {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n opacity: 0.2;\n background: var(--dialog-shield);\n}\n\n.dialog-container {\n display: flex;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n align-items: center;\n justify-content: center;\n\n .dialog {\n display: flex;\n flex-direction: column;\n width: 500px;\n min-height: 400px;\n max-height: 800px;\n padding: 20px;\n border: 1px solid var(--panel-border);\n border-radius: 10px;\n background: var(--panel-background);\n box-shadow: 5px 5px 5px 0 var(--drop-shadow);\n\n @include tablet-down {\n min-width: 90%;\n }\n\n .dialog-header {\n margin-bottom: 20px;\n border-bottom: 1px solid var(--panel-border);\n }\n\n .dialog-content {\n flex: 1;\n\n .dialog--label {\n @include font-size(10px);\n\n margin-top: $spacing-small;\n margin-bottom: calc($spacing-tiny / 2);\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n }\n\n .dialog-footer {\n display: flex;\n justify-content: flex-end;\n\n button {\n @include font-size(14px);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-top: $spacing-medium;\n padding: 6px 12px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: 0;\n background: none;\n color: var(--text-color-primary);\n font-family: $font-sans;\n cursor: pointer;\n\n +button {\n margin-left: $spacing-small;\n }\n\n &:hover {\n color: var(--accent-primary);\n }\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n }\n }\n }\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.peers {\n display: flex;\n flex: 1;\n justify-content: center;\n padding: 60px;\n\n @include desktop-down {\n padding: $spacing-small;\n }\n\n .content {\n flex: 1;\n max-width: $content-width-desktop;\n\n .peers--icon-button {\n margin-right: $spacing-small;\n border: 0;\n outline: 0;\n background: none;\n color: var(--text-color-secondary);\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n .add-button {\n @include font-size(14px);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 6px 12px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: 0;\n background: var(--bar-color-2);\n color: var(--text-color-primary);\n font-family: $font-sans;\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n }\n\n .peers-panel {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n\n @media (max-width: 1340px) {\n flex-direction: column;\n flex-wrap: nowrap;\n justify-content: flex-start;\n }\n\n .peers-panel--item {\n width: calc($content-width-desktop / 2 - $spacing-small / 2);\n margin-top: $spacing-small;\n overflow: hidden;\n\n @media (max-width: 1340px) {\n width: 100%;\n }\n\n .card {\n padding: $spacing-large;\n\n .peer-health {\n width: 16px;\n height: 16px;\n margin-right: $spacing-small;\n }\n\n .peer-id {\n @include font-size(14px);\n\n @media (min-width: 1340px) {\n @include font-size(12px);\n }\n\n display: flex;\n flex-direction: column;\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: 500;\n }\n\n .graph {\n margin-top: 24px;\n }\n\n .peer-actions {\n justify-content: space-between;\n margin-top: $spacing-small;\n\n @media (max-width: 720px) {\n flex-direction: column;\n\n .card--action {\n justify-content: center;\n }\n\n p {\n display: flex;\n justify-content: center;\n }\n }\n }\n }\n }\n }\n }\n}\n","/* stylelint-disable selector-class-pattern, function-no-unknown */\n@import \"./fonts\";\n@import \"./variables\";\n@import \"./media-queries\";\n\n.card {\n padding: 10px;\n border: 1px solid var(--panel-border);\n border-radius: 16px;\n background-color: var(--panel-background);\n\n &.card__flat {\n border-radius: 0;\n }\n\n .card--header {\n display: flex;\n flex-direction: row;\n align-items: center;\n color: var(--text-color-primary);\n }\n\n .card--header-count {\n @include font-size(12px);\n\n display: flex;\n align-items: center;\n height: 24px;\n margin-left: 20px;\n padding: 0 8px;\n border-radius: 6px;\n background-color: var(--background);\n color: var(--accent-primary);\n font-family: $font-sans;\n font-weight: bold;\n white-space: nowrap;\n }\n\n .card--label {\n @include font-size(10px);\n\n margin-top: $spacing-small;\n margin-bottom: calc($spacing-tiny / 2);\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-transform: uppercase;\n }\n\n .card--value {\n @include font-size(14px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n word-break: break-all;\n\n a {\n color: var(--accent-primary);\n text-decoration: none;\n\n &:hover {\n text-decoration: underline;\n }\n }\n\n .card--value--button {\n border: 0;\n outline: 0;\n background: none;\n color: var(--accent-primary);\n cursor: pointer;\n }\n\n &.card--value__mono {\n font-family: $font-mono;\n }\n\n &.card--value-textarea {\n @include font-size(12px);\n\n min-height: 150px;\n max-height: 150px;\n padding: 10px;\n overflow: auto;\n background: var(--panel-border);\n font-family: $font-mono;\n\n &.card--value-textarea__utf8 {\n max-height: 350px;\n white-space: pre-wrap;\n }\n\n &.card--value-textarea__hex {\n max-height: 350px;\n word-break: break-word;\n white-space: pre-wrap;\n }\n\n &.card--value-textarea__json {\n max-height: 350px;\n white-space: pre-wrap;\n }\n\n &.card--value-textarea__fit {\n min-height: auto;\n }\n }\n }\n\n .card--content {\n padding: 0 30px 20px;\n\n @include phone-down {\n padding: 15px 20px;\n }\n\n input {\n padding: 0 20px;\n }\n\n .card--content--border-l {\n padding-left: 16px;\n border-left: 1px solid var(--text-color-primary);\n }\n\n .card--content__input {\n display: flex;\n align-items: center;\n\n .card--content__input--dropdown {\n margin-left: -2px;\n cursor: pointer;\n\n svg {\n transition: transform 0.25s ease;\n\n path {\n fill: var(--text-color-primary);\n }\n }\n\n &.opened > svg {\n transform: rotate(90deg);\n }\n }\n\n .card--content__input--label {\n cursor: pointer;\n }\n }\n }\n\n .card--action {\n @include font-size(14px);\n\n display: flex;\n flex-direction: row;\n align-items: center;\n padding: 6px 12px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: 0;\n background: none;\n color: var(--text-color-primary);\n font-family: $font-sans;\n cursor: pointer;\n\n &:hover {\n color: var(--accent-primary);\n }\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n\n &.card--action-plain {\n border: 0;\n color: var(--text-color-secondary);\n\n &:hover {\n color: var(--accent-primary);\n }\n }\n\n &.card--action-danger {\n background-color: transparentize($danger, 0.9);\n }\n\n &.card--action-primary {\n background-color: var(--accent-primary);\n color: #ffffff;\n\n &:hover {\n color: #ffffff;\n }\n }\n }\n}\n","@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-regular.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-regular.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-italic.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-italic.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 500;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 500;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500italic.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-500italic.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: normal;\n font-weight: 700;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700.woff') format('woff');\n}\n\n@font-face {\n font-family: 'DM Sans';\n font-style: italic;\n font-weight: 700;\n src: local(''), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700italic.woff2') format('woff2'), url('../../assets/fonts/dm-sans/dm-sans-v6-latin-700italic.woff') format('woff');\n}\n","@import '../../scss/card';\n@import '../../scss/fonts';\n@import '../../scss/media-queries';\n\n.visualizer {\n display: flex;\n position: relative;\n flex: 1;\n height: 100%;\n overflow: hidden;\n\n .canvas {\n position: absolute;\n z-index: 0;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n }\n\n .action-panel-container {\n display: flex;\n position: absolute;\n z-index: 2;\n top: 30px;\n right: 30px;\n }\n\n .stats-panel-container {\n display: flex;\n position: absolute;\n z-index: 1;\n top: 0;\n right: 30px;\n bottom: 0;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n\n .stats-panel {\n .card--value,\n .card--label {\n text-align: right;\n }\n }\n }\n\n .key-panel-container {\n display: flex;\n position: absolute;\n z-index: 1;\n right: 30px;\n bottom: 30px;\n left: 30px;\n justify-content: center;\n pointer-events: none;\n\n .key-panel {\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n padding: $spacing-small;\n\n .key-panel-item {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin: 0 $spacing-small;\n\n @include desktop-down {\n width: 110px;\n margin: 0;\n }\n\n .key-marker {\n width: 12px;\n height: 12px;\n margin-right: $spacing-tiny;\n border-radius: 3px;\n }\n\n .key-label {\n @include font-size(14px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n }\n }\n }\n }\n\n .info-panel-container {\n display: flex;\n position: absolute;\n z-index: 2;\n top: 30px;\n left: 30px;\n width: 320px;\n\n @include phone-down {\n top: 10px;\n left: 10px;\n width: 90%;\n }\n\n .info-panel--key {\n width: 16px;\n height: 16px;\n margin-right: $spacing-tiny;\n border-radius: 3px;\n }\n }\n\n .vertex-state--unknown {\n background-color: #9aadce;\n }\n\n .vertex-state--pending {\n background-color: #ecdf1e;\n }\n\n .vertex-state--accepted {\n background-color: #8fe6fa;\n }\n\n .vertex-state--confirmed {\n background-color: #2260e7;\n }\n\n .vertex-state--finalized {\n background-color: #61e884;\n }\n\n .vertex-state--transaction {\n background-color: #c061e8;\n }\n\n .vertex-state--validation {\n background-color: #d92121;\n }\n\n .vertex-state--tip {\n background-color: #ff8b5c;\n }\n}\n","@import \"./variables\";\n@import \"./media-queries\";\n\n.row {\n display: flex;\n flex-direction: row;\n\n &.start {\n justify-content: flex-start;\n }\n\n &.middle {\n align-items: center;\n }\n\n &.end {\n justify-content: flex-end;\n }\n\n &.bottom {\n align-items: flex-end;\n }\n\n &.inline {\n display: inline-flex;\n }\n\n &.spread {\n justify-content: space-between;\n }\n\n &.wrap {\n flex-wrap: wrap;\n }\n}\n\n.col {\n display: flex;\n flex-direction: column;\n}\n\n.col,\n.row {\n @include phone-down {\n &.phone-down-column {\n flex-direction: column;\n }\n\n &.start {\n align-items: flex-start;\n }\n }\n\n @include tablet-down {\n &.tablet-down-column {\n flex-direction: column;\n }\n\n &.start {\n align-items: flex-start;\n }\n }\n\n @include tablet-down-only {\n &.tablet-down-only-column {\n flex-direction: column;\n\n &.start {\n align-items: flex-start;\n }\n }\n }\n\n @include desktop-down {\n &.desktop-down-column {\n flex-direction: column;\n }\n }\n\n @include phone-down {\n &.phone-down-row {\n flex-direction: row;\n }\n }\n\n @include tablet-down {\n &.tablet-down-row {\n flex-direction: row;\n }\n }\n\n @include tablet-down-only {\n &.tablet-down-only-row {\n flex-direction: row;\n }\n }\n\n @include desktop-down {\n &.desktop-down-row {\n flex-direction: row;\n }\n }\n}\n\n.fill {\n flex: 1;\n}\n\n.margin-t-t {\n margin-top: $spacing-tiny;\n}\n\n.margin-t-s {\n margin-top: $spacing-small;\n}\n\n.margin-t-m {\n margin-top: $spacing-medium;\n}\n\n.margin-t-l {\n margin-top: $spacing-large;\n}\n\n.margin-b-t {\n margin-bottom: $spacing-tiny;\n}\n\n.margin-b-s {\n margin-bottom: $spacing-small;\n}\n\n.margin-b-m {\n margin-bottom: $spacing-medium;\n}\n\n.margin-b-l {\n margin-bottom: $spacing-large;\n}\n\n.margin-r-t {\n margin-right: $spacing-tiny;\n}\n\n.margin-r-s {\n margin-right: $spacing-small;\n}\n\n.margin-r-m {\n margin-right: $spacing-medium;\n}\n\n.margin-r-l {\n margin-right: $spacing-large;\n}\n\n.margin-l-t {\n margin-left: $spacing-tiny;\n}\n\n.margin-l-s {\n margin-left: $spacing-small;\n}\n\n.margin-l-m {\n margin-left: $spacing-medium;\n}\n\n.margin-l-l {\n margin-left: $spacing-large;\n}\n\n.padding-t {\n padding: $spacing-tiny;\n}\n\n.padding-s {\n padding: $spacing-small;\n}\n\n.padding-m {\n padding: $spacing-medium;\n}\n\n.padding-l {\n padding: $spacing-large;\n}\n\n.padding-t-m {\n padding-top: $spacing-medium;\n}\n\n.padding-b-m {\n padding-bottom: $spacing-medium;\n}\n\n.padding-l-m {\n padding-left: $spacing-medium;\n}\n\n.padding-r-m {\n padding-right: $spacing-medium;\n}\n\n.padding-t-s {\n padding-top: $spacing-small;\n}\n\n.padding-b-s {\n padding-bottom: $spacing-small;\n}\n\n.padding-l-s {\n padding-left: $spacing-small;\n}\n\n.padding-r-s {\n padding-right: $spacing-small;\n}\n\n.padding-t-0 {\n padding-top: 0;\n}\n\n.padding-b-0 {\n padding-bottom: 0;\n}\n\n.padding-l-0 {\n padding-left: 0;\n}\n\n.padding-r-0 {\n padding-right: 0;\n}\n\n.padding-0 {\n padding: 0 !important;\n}\n","/* stylelint-disable selector-class-pattern */\n@import \"./fonts\";\n@import \"./variables\";\n\n.select-wrapper {\n display: inline-block;\n position: relative;\n\n svg {\n position: absolute;\n z-index: 2;\n top: 16px;\n right: 18px;\n color: var(--text-color-primary);\n pointer-events: none;\n }\n\n select {\n @include font-size(14px);\n\n height: 40px;\n margin: 0;\n padding: 0 48px 0 20px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: none;\n background-color: transparent;\n color: var(--text-color-primary);\n font-family: $font-sans;\n appearance: none;\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:-ms-expand {\n display: none;\n }\n\n &:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 var(--text-color-primary);\n }\n\n option {\n background-color: var(--panel-background);\n color: var(--text-color-primary);\n }\n }\n}\n\ninput {\n @include font-size(14px);\n\n height: 40px;\n margin: 0;\n padding: 0 48px 0 20px;\n border: 1px solid var(--text-color-secondary);\n border-radius: $form-input-radius;\n outline: none;\n background-color: transparent;\n color: var(--text-color-primary);\n font-family: $font-sans;\n appearance: none;\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n\n &:disabled {\n opacity: 0.5;\n }\n\n &.input--stretch {\n width: 100%;\n }\n}\n\ninput[type=\"file\"]::file-selector-button {\n display: none;\n}\n\n.file-wrapper {\n display: inline-block;\n position: relative;\n\n input {\n padding-left: 30px;\n }\n\n svg {\n position: absolute;\n top: 5px;\n left: 0;\n }\n}\n","@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 300;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-300.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-300.woff') format('woff');\n}\n\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: italic;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-italic.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-italic.woff') format('woff');\n}\n\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 400;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-regular.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-regular.woff') format('woff');\n}\n\n@font-face {\n font-family: 'IBM Plex Mono';\n font-style: normal;\n font-weight: 500;\n src: local(''), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-500.woff2') format('woff2'), url('../../assets/fonts/ibm-plex/ibm-plex-mono-v6-latin-500.woff') format('woff');\n}\n","@import \"./fonts\";\n@import \"./variables\";\n\nh1 {\n @include font-size(24px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n white-space: nowrap;\n}\n\nh2 {\n @include font-size(18px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n}\n\nh3 {\n @include font-size(14px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n font-weight: bold;\n text-decoration: none;\n}\n\nh4 {\n @include font-size(10px);\n\n color: var(--text-color-secondary);\n font-family: $font-sans;\n font-weight: 500;\n text-decoration: none;\n text-transform: uppercase;\n}\n\np {\n @include font-size(14px);\n\n color: var(--text-color-primary);\n font-family: $font-sans;\n}\n\na {\n outline: 0;\n text-decoration: none;\n\n &:focus {\n border-bottom: 1px solid var(--accent-primary);\n }\n}\n\nhr {\n height: 1px;\n margin: $spacing-medium 0;\n border: 0;\n background-color: var(--panel-border);\n}\n\n.secondary {\n color: var(--text-color-secondary);\n}\n\n.icon-button {\n padding: $spacing-tiny;\n border: 0;\n border-radius: $spacing-tiny;\n outline: 0;\n background: none;\n cursor: pointer;\n\n &:focus {\n box-shadow: 0 0 3px 0 var(--accent-primary);\n }\n}\n\n.word-break {\n word-break: break-word;\n}\n\n.word-break-all {\n word-break: break-all;\n}\n\n.hide-overflow {\n overflow: hidden;\n}\n\n.d-none {\n display: none !important;\n}\n\n.text-ellipsis {\n text-overflow: ellipsis;\n}\n",".theme-dark {\n --background: #22293e;\n --panel-background: #2b3659;\n --panel-border: #212a44;\n --panel-background-highlight: #353f60;\n --text-color-primary: #f1f4fa;\n --text-color-secondary: #9aadce;\n --accent-primary: #108cff;\n --bar-color-1: #309cff;\n --bar-color-2: #1f629f;\n --bar-color-3: #b7dcff;\n --bar-color-4: #e4f2ff;\n --scroll-thumb: #2b3659;\n --scroll-background: #212a44;\n --drop-shadow: #22293e;\n --dialog-shield: #aaaaaa;\n --tooltip-background: #9aadce;\n --tooltip-text: #22293e;\n}\n",".theme-light {\n --background: #f6f9ff;\n --panel-background: #ffffff;\n --panel-background-highlight: #f6f8fc;\n --panel-border: #eef4ff;\n --text-color-primary: #25395f;\n --text-color-secondary: #9aadce;\n --accent-primary: #108cff;\n --bar-color-1: #309cff;\n --bar-color-2: #b7dcff;\n --bar-color-3: #1f629f;\n --bar-color-4: #0a3257;\n --scroll-thumb: #9aadce;\n --scroll-background: #ffffff;\n --drop-shadow: #aaaaaa;\n --dialog-shield: #111111;\n --tooltip-background: #9aadce;\n --tooltip-text: #ffffff;\n}\n","@import './scss/layout';\n@import './scss/forms';\n@import './scss/standard';\n@import './scss/media-queries';\n@import './scss/themes/dark';\n@import './scss/themes/light';\n@import './scss/variables';\n\nhtml {\n height: 100%;\n}\n\n* {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n\nbody {\n display: flex;\n height: 100vh;\n overflow: hidden;\n background-color: var(--background);\n\n #root {\n display: flex;\n flex: 1;\n\n .success {\n color: $success;\n }\n\n .warning {\n color: $warning;\n }\n\n .danger {\n color: $danger;\n }\n\n .info {\n color: $info;\n }\n }\n}\n\n::-webkit-scrollbar-track {\n border-radius: 0;\n background-color: var(--scroll-background);\n}\n\n::-webkit-scrollbar {\n width: 12px;\n background-color: var(--scroll-background);\n}\n\n::-webkit-scrollbar-thumb {\n border-radius: 0;\n background-color: var(--scroll-thumb);\n}\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/pkg/dashboard/frontend/static/js/main.9a94a724.js.map b/pkg/dashboard/frontend/static/js/main.9a94a724.js.map deleted file mode 100644 index 34b67cf..0000000 --- a/pkg/dashboard/frontend/static/js/main.9a94a724.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/main.9a94a724.js","mappings":"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,QACA,MACA,MACA,UACA,QACA,QACA,QACA,UACA,QACA,QACA,MACA,QACA,QACA,SACA,QACA,QACA,UACA,OACA,QACA,SACA,UACA,UACA,QACA,SACA,SACA,UACA,SACA,UACA,QACA,QACA,QACA,SACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,UACA,MACA,QACA,UACA,SACA,QACA,UACA,QACA,OACA,SACA,OACA,QACA,QACA,MACA,QACA,QACA,OACA,SACA,UACA,SACA,SACA,QACA,MACA,WACA,SACA,UACA,MACA,SACA,UACA,QACA,SACA,SACA,SACA,UACA,OACA,SACA,SACA,WACA,UACA,UACA,QACA,SACA,OACA,SACA,OACA,SACA,UACA,UACA,QACA,QACA,QACA,OACA,UACA,QACA,UACA,OACA,OACA,WACA,QACA,QACA,MACA,UACA,UACA,OACA,SACA,SACA,SACA,MACA,SACA,UACA,SACA,OACA,QACA,SACA,SACA,QACA,OACA,SACA,UACA,SACA,OACA,SACA,QACA,SACA,SACA,UACA,QACA,OACA,QACA,UACA,OACA,SACA,SACA,UACA,SACA,UACA,MACA,OACA,OACA,UACA,OACA,QACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,SACA,SACA,SACA,OACA,SACA,SACA,MACA,MACA,UACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,QACA,WACA,SACA,SACA,QACA,UACA,QACA,QACA,SACA,QACA,SACA,UACA,QACA,OACA,OACA,SACA,SACA,SACA,SACA,SACA,QACA,MACA,WACA,OACA,SACA,QACA,OACA,UACA,QACA,QACA,SACA,OACA,OACA,OACA,OACA,SACA,OACA,MACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,UACA,UACA,UACA,MACA,SACA,OACA,QACA,SACA,QACA,OACA,OACA,OACA,SACA,SACA,SACA,MACA,UACA,QACA,WACA,SACA,SACA,QACA,UACA,OACA,UACA,SACA,SACA,SACA,UACA,SACA,UACA,QACA,QACA,WACA,SACA,QACA,UACA,SACA,QACA,OACA,QACA,QACA,SACA,OACA,SACA,QACA,UACA,QACA,QACA,UACA,SACA,SACA,UACA,UACA,QACA,QACA,QACA,WACA,SACA,UACA,OACA,QACA,QACA,OACA,UACA,OACA,OACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,UACA,SACA,QACA,QACA,UACA,OACA,SACA,OACA,OACA,UACA,QACA,SACA,UACA,OACA,UACA,QACA,SACA,UACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,OACA,OACA,SACA,OACA,QACA,OACA,OACA,UACA,OACA,SACA,QACA,UACA,SACA,SACA,SACA,QACA,SACA,QACA,SACA,QACA,OACA,QACA,QACA,SACA,QACA,QACA,QACA,SACA,QACA,OACA,UACA,QACA,QACA,SACA,OACA,QACA,SACA,QACA,UACA,QACA,SACA,UACA,SACA,QACA,MACA,UACA,OACA,UACA,MACA,WACA,UACA,UACA,UACA,QACA,UACA,SACA,OACA,QACA,MACA,SACA,OACA,QACA,SACA,SACA,OACA,WACA,OACA,MACA,OACA,SACA,SACA,SACA,WACA,SACA,UACA,WACA,WACA,OACA,UACA,SACA,OACA,SACA,QACA,UACA,SACA,SACA,SACA,UACA,OACA,SACA,SACA,UACA,QACA,SACA,SACA,WACA,SACA,SACA,OACA,UACA,UACA,SACA,SACA,UACA,SACA,SACA,UACA,OACA,UACA,QACA,OACA,SACA,OACA,SACA,UACA,UACA,UACA,SACA,WACA,SACA,OACA,WACA,WACA,UACA,OACA,UACA,WACA,UACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,MACA,OACA,UACA,SACA,SACA,SACA,QACA,OACA,OACA,SACA,OACA,QACA,SACA,QACA,UACA,OACA,QACA,QACA,QACA,QACA,QACA,OACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,SACA,OACA,QACA,OACA,QACA,UACA,QACA,QACA,QACA,OACA,QACA,SACA,OACA,OACA,OACA,UACA,UACA,OACA,OACA,UACA,SACA,MACA,QACA,SACA,QACA,QACA,WACA,UACA,UACA,WACA,WACA,QACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,QACA,SACA,QACA,MACA,UACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,QACA,WACA,UACA,QACA,QACA,MACA,QACA,QACA,UACA,QACA,QACA,SACA,QACA,UACA,SACA,UACA,SACA,WACA,OACA,QACA,SACA,QACA,UACA,SACA,WACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,QACA,MACA,UACA,SACA,OACA,UACA,OACA,QACA,QACA,OACA,QACA,OACA,SACA,SACA,MACA,QACA,UACA,OACA,UACA,MACA,QACA,SACA,UACA,QACA,WACA,UACA,WACA,UACA,MACA,OACA,OACA,SACA,QACA,WACA,QACA,QACA,MACA,QACA,UACA,QACA,SACA,OACA,OACA,SACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,QACA,SACA,OACA,MACA,UACA,MACA,OACA,QACA,QACA,OACA,SACA,OACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,QACA,MACA,OACA,QACA,MACA,OACA,OACA,SACA,OACA,OACA,QACA,SACA,SACA,OACA,UACA,QACA,UACA,SACA,SACA,QACA,MACA,UACA,QACA,WACA,QACA,SACA,SACA,OACA,QACA,QACA,QACA,SACA,QACA,OACA,MACA,QACA,UACA,OACA,SACA,SACA,OACA,SACA,UACA,OACA,MACA,SACA,UACA,SACA,SACA,UACA,MACA,OACA,OACA,SACA,QACA,OACA,UACA,SACA,QACA,SACA,UACA,UACA,QACA,QACA,OACA,SACA,SACA,UACA,OACA,OACA,OACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,OACA,OACA,OACA,UACA,OACA,OACA,QACA,UACA,SACA,SACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,OACA,UACA,QACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,MACA,MACA,QACA,OACA,OACA,SACA,UACA,OACA,QACA,SACA,OACA,QACA,UACA,MACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,WACA,SACA,QACA,SACA,OACA,MACA,OACA,SACA,OACA,OACA,OACA,MACA,OACA,UACA,QACA,SACA,OACA,OACA,UACA,SACA,OACA,QACA,OACA,OACA,OACA,SACA,QACA,WACA,OACA,QACA,OACA,QACA,MACA,OACA,QACA,SACA,QACA,UACA,SACA,OACA,SACA,QACA,OACA,UACA,SACA,MACA,OACA,OACA,WACA,OACA,SACA,MACA,UACA,UACA,QACA,UACA,UACA,SACA,SACA,SACA,UACA,UACA,OACA,UACA,SACA,WACA,QACA,WACA,SACA,WACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,QACA,WACA,QACA,UACA,SACA,SACA,SACA,UACA,UACA,SACA,WACA,OACA,SACA,SACA,UACA,OACA,SACA,UACA,QACA,OACA,QACA,SACA,SACA,MACA,OACA,UACA,QACA,QACA,QACA,MACA,OACA,OACA,UACA,MACA,QACA,QACA,OACA,SACA,SACA,OACA,OACA,WACA,OACA,OACA,UACA,MACA,OACA,MACA,SACA,OACA,UACA,OACA,MACA,UACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,MACA,QACA,QACA,SACA,OACA,OACA,OACA,WACA,SACA,QACA,QACA,QACA,QACA,UACA,OACA,MACA,OACA,UACA,QACA,OACA,SACA,OACA,QACA,QACA,UACA,OACA,MACA,QACA,SACA,UACA,QACA,OACA,SACA,OACA,UACA,SACA,SACA,QACA,OACA,UACA,UACA,UACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,OACA,SACA,OACA,SACA,OACA,SACA,OACA,OACA,UACA,QACA,OACA,QACA,SACA,OACA,OACA,UACA,OACA,SACA,OACA,QACA,QACA,UACA,SACA,QACA,QACA,SACA,SACA,UACA,MACA,QACA,SACA,OACA,OACA,OACA,QACA,OACA,SACA,MACA,SACA,UACA,QACA,UACA,SACA,QACA,SACA,QACA,SACA,SACA,SACA,WACA,OACA,OACA,SACA,QACA,WACA,OACA,SACA,SACA,UACA,OACA,SACA,OACA,UACA,OACA,WACA,QACA,QACA,SACA,OACA,SACA,SACA,UACA,OACA,QACA,QACA,QACA,QACA,OACA,UACA,QACA,SACA,SACA,WACA,OACA,UACA,QACA,OACA,UACA,QACA,SACA,UACA,SACA,SACA,OACA,UACA,MACA,QACA,UACA,SACA,QACA,SACA,MACA,SACA,UACA,SACA,UACA,QACA,OACA,QACA,OACA,UACA,WACA,SACA,SACA,QACA,WACA,QACA,OACA,QACA,OACA,SACA,OACA,WACA,SACA,SACA,WACA,QACA,OACA,SACA,SACA,UACA,OACA,QACA,OACA,SACA,SACA,QACA,SACA,SACA,OACA,OACA,OACA,WACA,UACA,UACA,SACA,QACA,OACA,MACA,UACA,UACA,QACA,OACA,OACA,OACA,QACA,QACA,QACA,UACA,SACA,SACA,QACA,OACA,UACA,OACA,UACA,SACA,QACA,MACA,UACA,SACA,QACA,MACA,MACA,OACA,SACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,OACA,MACA,QACA,SACA,QACA,MACA,OACA,MACA,QACA,UACA,OACA,OACA,MACA,QACA,SACA,OACA,OACA,QACA,UACA,SACA,SACA,SACA,QACA,UACA,QACA,WACA,QACA,SACA,WACA,SACA,UACA,QACA,UACA,QACA,SACA,UACA,OACA,OACA,OACA,MACA,QACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,SACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,SACA,OACA,SACA,QACA,OACA,QACA,OACA,UACA,SACA,UACA,QACA,OACA,UACA,QACA,SACA,OACA,UACA,UACA,MACA,UACA,SACA,SACA,SACA,UACA,SACA,SACA,MACA,QACA,QACA,SACA,WACA,QACA,SACA,UACA,QACA,MACA,SACA,OACA,QACA,OACA,UACA,OACA,SACA,QACA,QACA,QACA,SACA,UACA,QACA,OACA,SACA,SACA,QACA,OACA,SACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,OACA,OACA,UACA,UACA,WACA,WACA,OACA,SACA,UACA,UACA,SACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,SACA,UACA,QACA,QACA,UACA,QACA,WACA,SACA,UACA,QACA,UACA,UACA,UACA,SACA,UACA,UACA,UACA,QACA,WACA,UACA,UACA,QACA,UACA,SACA,UACA,OACA,OACA,QACA,UACA,QACA,QACA,QACA,WACA,SACA,UACA,QACA,OACA,MACA,SACA,UACA,UACA,UACA,UACA,WACA,QACA,OACA,OACA,QACA,SACA,UACA,OACA,OACA,QACA,QACA,OACA,OACA,QACA,QACA,OACA,QACA,SACA,QACA,QACA,OACA,OACA,SACA,QACA,MACA,QACA,QACA,OACA,SACA,QACA,UACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,OACA,SACA,WACA,SACA,SACA,SACA,QACA,OACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,WACA,SACA,WACA,WACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,MACA,SACA,OACA,OACA,OACA,QACA,QACA,QACA,QACA,OACA,OACA,SACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,SACA,SACA,UACA,OACA,SACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,SACA,OACA,MACA,OACA,MACA,SACA,QACA,MACA,SACA,UACA,OACA,OACA,QACA,SACA,QACA,OACA,SACA,OACA,SACA,OACA,UACA,UACA,QACA,UACA,OACA,MACA,QACA,OACA,QACA,UACA,QACA,SACA,SACA,UACA,WACA,WACA,QACA,QACA,SACA,SACA,QACA,MACA,SACA,SACA,OACA,SACA,SACA,UACA,WACA,OACA,OACA,UACA,SACA,OACA,UACA,SACA,QACA,WACA,SACA,UACA,UACA,SACA,QACA,QACA,SACA,QACA,UACA,QACA,OACA,QACA,UACA,SACA,QACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,QACA,WACA,QACA,SACA,QACA,UACA,MACA,UACA,OACA,OACA,QACA,QACA,OACA,SACA,OACA,QACA,SACA,UACA,SACA,QACA,OACA,QACA,SACA,UACA,MACA,OACA,QACA,SACA,MACA,QACA,OACA,QACA,QACA,OACA,OACA,QACA,UACA,QACA,QACA,SACA,OACA,SACA,OACA,OACA,QACA,QACA,QACA,QACA,QACA,SACA,QACA,QACA,OACA,QACA,OACA,OACA,SACA,SACA,OACA,OACA,OACA,QACA,UACA,QACA,WACA,QACA,UACA,OACA,OACA,QACA,OACA,OACA,QACA,OACA,SACA,QACA,QACA,QACA,UACA,QACA,QACA,UACA,QACA,QACA,QACA,SACA,QACA,SACA,QACA,OACA,SACA,QACA,QACA,UACA,QACA,QACA,OACA,QACA,SACA,SACA,MACA,SACA,UACA,WACA,SACA,UACA,QACA,QACA,SACA,QACA,QACA,QACA,QACA,OACA,QACA,QACA,OACA,OACA,SACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,QACA,QACA,WACA,SACA,SACA,SACA,WACA,UACA,QACA,UACA,QACA,UACA,SACA,SACA,UACA,OACA,SACA,SACA,QACA,UACA,OACA,SACA,MACA,QACA,SACA,QACA,SACA,UACA,OACA,UACA,QACA,WACA,WACA,SACA,UACA,UACA,UACA,QACA,OACA,QACA,QACA,QACA,QACA,OACA,QACA,SACA,QACA,SACA,UACA,QACA,SACA,QACA,SACA,MACA,OACA,SACA,OACA,OACA,OACA,SACA,OACA,QACA,SACA,OACA,QACA,OACA,OACA,MACA,SACA,SACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,OACA,SACA,QACA,OACA,QACA,OACA,UACA,QACA,SACA,QACA,QACA,UACA,SACA,OACA,QACA,OACA,SACA,OACA,OACA,MACA,QACA,SACA,QACA,QACA,UACA,QACA,UACA,MACA,WACA,SACA,QACA,SACA,WACA,OACA,SACA,UACA,OACA,QACA,MACA,QACA,SACA,QACA,UACA,WACA,OACA,QACA,UACA,SACA,QACA,OACA,MACA,QACA,QACA,UACA,SACA,QACA,WACA,OACA,QACA,SACA,OACA,QACA,OACA,QACA,QACA,QACA,QACA,UACA,OACA,OACA,SACA,UACA,QACA,OACA,QACA,UACA,QACA,QACA,MACA,OACA,UACA,SACA,OACA,SACA,SACA,OACA,SACA,SACA,SACA,QACA,OACA,QACA,MACA,OACA,UACA,OACA,WACA,SACA,UACA,QACA,UACA,QACA,OACA,SACA,SACA,UACA,UACA,SACA,OACA,WACA,UACA,SACA,QACA,UACA,SACA,SACA,UACA,SACA,OACA,QACA,QACA,QACA,OACA,QACA,MACA,OACA,SACA,UACA,QACA,UACA,SACA,SACA,QACA,QACA,SACA,QACA,MACA,SACA,QACA,UACA,OACA,QACA,UACA,SACA,SACA,UACA,QACA,OACA,SACA,UACA,OACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,OACA,UACA,UACA,SACA,UACA,QACA,OACA,QACA,SACA,QACA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","sources":["../node_modules/add-event-listener/index.js","../node_modules/base64-js/index.js","../node_modules/big-integer/BigInteger.js","../node_modules/buffer/index.js","../node_modules/classnames/index.js","../node_modules/gintersect/index.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/humanize-duration/humanize-duration.js","../node_modules/ieee754/index.js","../node_modules/isarray/index.js","../node_modules/moment/moment.js","../node_modules/ngraph.centrality/index.js","../node_modules/ngraph.centrality/src/betweenness.js","../node_modules/ngraph.centrality/src/closeness.js","../node_modules/ngraph.centrality/src/degree.js","../node_modules/ngraph.centrality/src/eccentricity.js","../node_modules/ngraph.events/index.js","../node_modules/ngraph.expose/index.js","../node_modules/ngraph.forcelayout/index.js","../node_modules/ngraph.forcelayout/node_modules/ngraph.events/index.js","../node_modules/ngraph.fromjson/index.js","../node_modules/ngraph.generators/index.js","../node_modules/ngraph.generators/node_modules/ngraph.random/index.js","../node_modules/ngraph.graph/index.js","../node_modules/ngraph.merge/index.js","../node_modules/ngraph.physics.primitives/index.js","../node_modules/ngraph.physics.simulator/index.js","../node_modules/ngraph.physics.simulator/lib/bounds.js","../node_modules/ngraph.physics.simulator/lib/createBody.js","../node_modules/ngraph.physics.simulator/lib/dragForce.js","../node_modules/ngraph.physics.simulator/lib/eulerIntegrator.js","../node_modules/ngraph.physics.simulator/lib/spring.js","../node_modules/ngraph.physics.simulator/lib/springForce.js","../node_modules/ngraph.quadtreebh/index.js","../node_modules/ngraph.quadtreebh/insertStack.js","../node_modules/ngraph.quadtreebh/isSamePosition.js","../node_modules/ngraph.quadtreebh/node.js","../node_modules/ngraph.random/index.js","../node_modules/ngraph.tojson/index.js","../node_modules/path-to-regexp/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/simplesvg/index.js","../node_modules/simplesvg/lib/compile.js","../node_modules/simplesvg/lib/compile_template.js","../node_modules/simplesvg/lib/domparser.js","../node_modules/vivagraphjs/src/Algorithms/centrality.js","../node_modules/vivagraphjs/src/Algorithms/operations.js","../node_modules/vivagraphjs/src/Input/domInputManager.js","../node_modules/vivagraphjs/src/Input/dragndrop.js","../node_modules/vivagraphjs/src/Input/webglInputManager.js","../node_modules/vivagraphjs/src/Layout/constant.js","../node_modules/vivagraphjs/src/Utils/backwardCompatibleEvents.js","../node_modules/vivagraphjs/src/Utils/browserInfo.js","../node_modules/vivagraphjs/src/Utils/documentEvents.js","../node_modules/vivagraphjs/src/Utils/findElementPosition.js","../node_modules/vivagraphjs/src/Utils/getDimensions.js","../node_modules/vivagraphjs/src/Utils/intersectRect.js","../node_modules/vivagraphjs/src/Utils/nullEvents.js","../node_modules/vivagraphjs/src/Utils/rect.js","../node_modules/vivagraphjs/src/Utils/timer.js","../node_modules/vivagraphjs/src/Utils/windowEvents.js","../node_modules/vivagraphjs/src/View/renderer.js","../node_modules/vivagraphjs/src/View/svgGraphics.js","../node_modules/vivagraphjs/src/View/webglGraphics.js","../node_modules/vivagraphjs/src/WebGL/parseColor.js","../node_modules/vivagraphjs/src/WebGL/texture.js","../node_modules/vivagraphjs/src/WebGL/webgl.js","../node_modules/vivagraphjs/src/WebGL/webglAtlas.js","../node_modules/vivagraphjs/src/WebGL/webglImage.js","../node_modules/vivagraphjs/src/WebGL/webglImageNodeProgram.js","../node_modules/vivagraphjs/src/WebGL/webglInputEvents.js","../node_modules/vivagraphjs/src/WebGL/webglLine.js","../node_modules/vivagraphjs/src/WebGL/webglLinkProgram.js","../node_modules/vivagraphjs/src/WebGL/webglNodeProgram.js","../node_modules/vivagraphjs/src/WebGL/webglSquare.js","../node_modules/vivagraphjs/src/version.js","../node_modules/vivagraphjs/src/viva.js","assets|lazy|/^/.//.*//banner/.svg$/|groupOptions: {}|namespace object","assets|lazy|/^/.//.*//logo/-navigation/.svg$/|groupOptions: {}|namespace object","assets|sync|/^/.//.*//brand/.json$","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/typeof.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/history/esm/history.js","../node_modules/react-router/node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/withRouter.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","assets/home.svg","assets/moon.svg","assets/padlock-unlocked.svg","assets/padlock.svg","assets/peers.svg","assets/sun.svg","assets/visualizer.svg","models/websocket/webSocketTopic.ts","factories/serviceFactory.ts","services/eventAggregator.ts","utils/brandHelper.ts","app/components/layout/AsyncComponent.tsx","app/components/layout/Breakpoint.tsx","utils/formatHelper.ts","assets/health-bad.svg","assets/health-good.svg","assets/banner-curve.svg","app/components/layout/HealthIndicator.tsx","app/components/layout/MicroGraph.tsx","app/components/layout/Header.tsx","app/components/layout/NavMenu.tsx","app/components/layout/NavPanel.tsx","assets/confirmation.svg","assets/db-icon.svg","assets/memory.svg","assets/milestone.svg","assets/pruning.svg","assets/uptime.svg","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@iota/crypto.js/dist/esm/address/bech32.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/blake2b.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/curl.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/sha1.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/sha256.mjs","../node_modules/@iota/crypto.js/dist/esm/hashes/sha512.mjs","../node_modules/@iota/util.js/dist/esm/utils/randomHelper.mjs","../node_modules/@iota/util.js/dist/esm/polyfill-browser.mjs","../node_modules/@iota/util.js/dist/esm/encoding/base32.mjs","../node_modules/@iota/util.js/dist/esm/encoding/base58.mjs","../node_modules/@iota/util.js/dist/esm/encoding/base64.mjs","../node_modules/@iota/util.js/dist/esm/utils/bigIntHelper.mjs","../node_modules/@iota/util.js/dist/esm/utils/converter.mjs","../node_modules/@iota/util.js/dist/esm/utils/writeStream.mjs","../node_modules/@iota/crypto.js/dist/esm/macs/hmacSha256.mjs","../node_modules/@iota/crypto.js/dist/esm/macs/hmacSha512.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/pbkdf2.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/wordlists/english.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/bip39.mjs","../node_modules/@iota/crypto.js/dist/esm/utils/arrayHelper.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/bigIntCommon.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/fieldElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/cachedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/completedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/preComputedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/const.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/projectiveGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/extendedGroupElement.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/edwards25519/scalar.mjs","../node_modules/@iota/crypto.js/dist/esm/signatures/ed25519.mjs","../node_modules/@iota/crypto.js/dist/esm/keys/slip0010.mjs","assets/eye-closed.svg","app/components/layout/Graph.tsx","app/components/layout/Tooltip.tsx","app/components/layout/InfoPanel.tsx","assets/eye.svg","assets/chevron-left.svg","utils/dataHelper.ts","app/components/tangle/PeersSummaryPanel.tsx","app/routes/Home.tsx","app/components/layout/Spinner.tsx","app/routes/Login.tsx","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","assets/copy.svg","utils/clipboardHelper.ts","assets/chevron-right.svg","app/components/layout/BlockButton.tsx","app/routes/Peer.tsx","assets/close.svg","app/components/layout/Dialog.tsx","app/routes/Peers.tsx","assets/pause.svg","assets/play.svg","app/routes/Visualizer.tsx","models/tangle/blockBodyTypes.ts","models/tangle/payloadTypes.ts","app/App.tsx","utils/fetchHelper.ts","services/authService.ts","services/dashboardConfigService.ts","services/localStorageService.ts","services/metricsService.ts","services/nodeConfigService.ts","services/sessionStorageService.ts","services/settingsService.ts","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","models/clients/clientError.ts","models/clients/singleNodeClient.ts","services/tangleService.ts","services/themeService.ts","services/visualizerService.ts","services/webSocketService.ts","index.tsx"],"sourcesContent":["addEventListener.removeEventListener = removeEventListener\naddEventListener.addEventListener = addEventListener\n\nmodule.exports = addEventListener\n\nvar Events = null\n\nfunction addEventListener(el, eventName, listener, useCapture) {\n Events = Events || (\n document.addEventListener ?\n {add: stdAttach, rm: stdDetach} :\n {add: oldIEAttach, rm: oldIEDetach}\n )\n \n return Events.add(el, eventName, listener, useCapture)\n}\n\nfunction removeEventListener(el, eventName, listener, useCapture) {\n Events = Events || (\n document.addEventListener ?\n {add: stdAttach, rm: stdDetach} :\n {add: oldIEAttach, rm: oldIEDetach}\n )\n \n return Events.rm(el, eventName, listener, useCapture)\n}\n\nfunction stdAttach(el, eventName, listener, useCapture) {\n el.addEventListener(eventName, listener, useCapture)\n}\n\nfunction stdDetach(el, eventName, listener, useCapture) {\n el.removeEventListener(eventName, listener, useCapture)\n}\n\nfunction oldIEAttach(el, eventName, listener, useCapture) {\n if(useCapture) {\n throw new Error('cannot useCapture in oldIE')\n }\n\n el.attachEvent('on' + eventName, listener)\n}\n\nfunction oldIEDetach(el, eventName, listener, useCapture) {\n el.detachEvent('on' + eventName, listener)\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","var bigInt = (function (undefined) {\r\n \"use strict\";\r\n\r\n var BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_INT = 9007199254740992,\r\n MAX_INT_ARR = smallToArray(MAX_INT),\r\n DEFAULT_ALPHABET = \"0123456789abcdefghijklmnopqrstuvwxyz\";\r\n\r\n var supportsNativeBigInt = typeof BigInt === \"function\";\r\n\r\n function Integer(v, radix, alphabet, caseSensitive) {\r\n if (typeof v === \"undefined\") return Integer[0];\r\n if (typeof radix !== \"undefined\") return +radix === 10 && !alphabet ? parseValue(v) : parseBase(v, radix, alphabet, caseSensitive);\r\n return parseValue(v);\r\n }\r\n\r\n function BigInteger(value, sign) {\r\n this.value = value;\r\n this.sign = sign;\r\n this.isSmall = false;\r\n }\r\n BigInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function SmallInteger(value) {\r\n this.value = value;\r\n this.sign = value < 0;\r\n this.isSmall = true;\r\n }\r\n SmallInteger.prototype = Object.create(Integer.prototype);\r\n\r\n function NativeBigInt(value) {\r\n this.value = value;\r\n }\r\n NativeBigInt.prototype = Object.create(Integer.prototype);\r\n\r\n function isPrecise(n) {\r\n return -MAX_INT < n && n < MAX_INT;\r\n }\r\n\r\n function smallToArray(n) { // For performance reasons doesn't reference BASE, need to change this function if BASE changes\r\n if (n < 1e7)\r\n return [n];\r\n if (n < 1e14)\r\n return [n % 1e7, Math.floor(n / 1e7)];\r\n return [n % 1e7, Math.floor(n / 1e7) % 1e7, Math.floor(n / 1e14)];\r\n }\r\n\r\n function arrayToSmall(arr) { // If BASE changes this function may need to change\r\n trim(arr);\r\n var length = arr.length;\r\n if (length < 4 && compareAbs(arr, MAX_INT_ARR) < 0) {\r\n switch (length) {\r\n case 0: return 0;\r\n case 1: return arr[0];\r\n case 2: return arr[0] + arr[1] * BASE;\r\n default: return arr[0] + (arr[1] + arr[2] * BASE) * BASE;\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n function trim(v) {\r\n var i = v.length;\r\n while (v[--i] === 0);\r\n v.length = i + 1;\r\n }\r\n\r\n function createArray(length) { // function shamelessly stolen from Yaffle's library https://github.com/Yaffle/BigInteger\r\n var x = new Array(length);\r\n var i = -1;\r\n while (++i < length) {\r\n x[i] = 0;\r\n }\r\n return x;\r\n }\r\n\r\n function truncate(n) {\r\n if (n > 0) return Math.floor(n);\r\n return Math.ceil(n);\r\n }\r\n\r\n function add(a, b) { // assumes a and b are arrays with a.length >= b.length\r\n var l_a = a.length,\r\n l_b = b.length,\r\n r = new Array(l_a),\r\n carry = 0,\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l_b; i++) {\r\n sum = a[i] + b[i] + carry;\r\n carry = sum >= base ? 1 : 0;\r\n r[i] = sum - carry * base;\r\n }\r\n while (i < l_a) {\r\n sum = a[i] + carry;\r\n carry = sum === base ? 1 : 0;\r\n r[i++] = sum - carry * base;\r\n }\r\n if (carry > 0) r.push(carry);\r\n return r;\r\n }\r\n\r\n function addAny(a, b) {\r\n if (a.length >= b.length) return add(a, b);\r\n return add(b, a);\r\n }\r\n\r\n function addSmall(a, carry) { // assumes a is array, carry is number with 0 <= carry < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n sum, i;\r\n for (i = 0; i < l; i++) {\r\n sum = a[i] - base + carry;\r\n carry = Math.floor(sum / base);\r\n r[i] = sum - carry * base;\r\n carry += 1;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall) {\r\n return new BigInteger(addSmall(a, Math.abs(b)), this.sign);\r\n }\r\n return new BigInteger(addAny(a, b), this.sign);\r\n };\r\n BigInteger.prototype.plus = BigInteger.prototype.add;\r\n\r\n SmallInteger.prototype.add = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.subtract(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n if (isPrecise(a + b)) return new SmallInteger(a + b);\r\n b = smallToArray(Math.abs(b));\r\n }\r\n return new BigInteger(addSmall(b, Math.abs(a)), a < 0);\r\n };\r\n SmallInteger.prototype.plus = SmallInteger.prototype.add;\r\n\r\n NativeBigInt.prototype.add = function (v) {\r\n return new NativeBigInt(this.value + parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.plus = NativeBigInt.prototype.add;\r\n\r\n function subtract(a, b) { // assumes a and b are arrays with a >= b\r\n var a_l = a.length,\r\n b_l = b.length,\r\n r = new Array(a_l),\r\n borrow = 0,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < b_l; i++) {\r\n difference = a[i] - borrow - b[i];\r\n if (difference < 0) {\r\n difference += base;\r\n borrow = 1;\r\n } else borrow = 0;\r\n r[i] = difference;\r\n }\r\n for (i = b_l; i < a_l; i++) {\r\n difference = a[i] - borrow;\r\n if (difference < 0) difference += base;\r\n else {\r\n r[i++] = difference;\r\n break;\r\n }\r\n r[i] = difference;\r\n }\r\n for (; i < a_l; i++) {\r\n r[i] = a[i];\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function subtractAny(a, b, sign) {\r\n var value;\r\n if (compareAbs(a, b) >= 0) {\r\n value = subtract(a, b);\r\n } else {\r\n value = subtract(b, a);\r\n sign = !sign;\r\n }\r\n value = arrayToSmall(value);\r\n if (typeof value === \"number\") {\r\n if (sign) value = -value;\r\n return new SmallInteger(value);\r\n }\r\n return new BigInteger(value, sign);\r\n }\r\n\r\n function subtractSmall(a, b, sign) { // assumes a is array, b is number with 0 <= b < MAX_INT\r\n var l = a.length,\r\n r = new Array(l),\r\n carry = -b,\r\n base = BASE,\r\n i, difference;\r\n for (i = 0; i < l; i++) {\r\n difference = a[i] + carry;\r\n carry = Math.floor(difference / base);\r\n difference %= base;\r\n r[i] = difference < 0 ? difference + base : difference;\r\n }\r\n r = arrayToSmall(r);\r\n if (typeof r === \"number\") {\r\n if (sign) r = -r;\r\n return new SmallInteger(r);\r\n } return new BigInteger(r, sign);\r\n }\r\n\r\n BigInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n if (this.sign !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var a = this.value, b = n.value;\r\n if (n.isSmall)\r\n return subtractSmall(a, Math.abs(b), this.sign);\r\n return subtractAny(a, b, this.sign);\r\n };\r\n BigInteger.prototype.minus = BigInteger.prototype.subtract;\r\n\r\n SmallInteger.prototype.subtract = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value;\r\n if (a < 0 !== n.sign) {\r\n return this.add(n.negate());\r\n }\r\n var b = n.value;\r\n if (n.isSmall) {\r\n return new SmallInteger(a - b);\r\n }\r\n return subtractSmall(b, Math.abs(a), a >= 0);\r\n };\r\n SmallInteger.prototype.minus = SmallInteger.prototype.subtract;\r\n\r\n NativeBigInt.prototype.subtract = function (v) {\r\n return new NativeBigInt(this.value - parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.minus = NativeBigInt.prototype.subtract;\r\n\r\n BigInteger.prototype.negate = function () {\r\n return new BigInteger(this.value, !this.sign);\r\n };\r\n SmallInteger.prototype.negate = function () {\r\n var sign = this.sign;\r\n var small = new SmallInteger(-this.value);\r\n small.sign = !sign;\r\n return small;\r\n };\r\n NativeBigInt.prototype.negate = function () {\r\n return new NativeBigInt(-this.value);\r\n }\r\n\r\n BigInteger.prototype.abs = function () {\r\n return new BigInteger(this.value, false);\r\n };\r\n SmallInteger.prototype.abs = function () {\r\n return new SmallInteger(Math.abs(this.value));\r\n };\r\n NativeBigInt.prototype.abs = function () {\r\n return new NativeBigInt(this.value >= 0 ? this.value : -this.value);\r\n }\r\n\r\n\r\n function multiplyLong(a, b) {\r\n var a_l = a.length,\r\n b_l = b.length,\r\n l = a_l + b_l,\r\n r = createArray(l),\r\n base = BASE,\r\n product, carry, i, a_i, b_j;\r\n for (i = 0; i < a_l; ++i) {\r\n a_i = a[i];\r\n for (var j = 0; j < b_l; ++j) {\r\n b_j = b[j];\r\n product = a_i * b_j + r[i + j];\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n r[i + j + 1] += carry;\r\n }\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n function multiplySmall(a, b) { // assumes a is array, b is number with |b| < BASE\r\n var l = a.length,\r\n r = new Array(l),\r\n base = BASE,\r\n carry = 0,\r\n product, i;\r\n for (i = 0; i < l; i++) {\r\n product = a[i] * b + carry;\r\n carry = Math.floor(product / base);\r\n r[i] = product - carry * base;\r\n }\r\n while (carry > 0) {\r\n r[i++] = carry % base;\r\n carry = Math.floor(carry / base);\r\n }\r\n return r;\r\n }\r\n\r\n function shiftLeft(x, n) {\r\n var r = [];\r\n while (n-- > 0) r.push(0);\r\n return r.concat(x);\r\n }\r\n\r\n function multiplyKaratsuba(x, y) {\r\n var n = Math.max(x.length, y.length);\r\n\r\n if (n <= 30) return multiplyLong(x, y);\r\n n = Math.ceil(n / 2);\r\n\r\n var b = x.slice(n),\r\n a = x.slice(0, n),\r\n d = y.slice(n),\r\n c = y.slice(0, n);\r\n\r\n var ac = multiplyKaratsuba(a, c),\r\n bd = multiplyKaratsuba(b, d),\r\n abcd = multiplyKaratsuba(addAny(a, b), addAny(c, d));\r\n\r\n var product = addAny(addAny(ac, shiftLeft(subtract(subtract(abcd, ac), bd), n)), shiftLeft(bd, 2 * n));\r\n trim(product);\r\n return product;\r\n }\r\n\r\n // The following function is derived from a surface fit of a graph plotting the performance difference\r\n // between long multiplication and karatsuba multiplication versus the lengths of the two arrays.\r\n function useKaratsuba(l1, l2) {\r\n return -0.012 * l1 - 0.012 * l2 + 0.000015 * l1 * l2 > 0;\r\n }\r\n\r\n BigInteger.prototype.multiply = function (v) {\r\n var n = parseValue(v),\r\n a = this.value, b = n.value,\r\n sign = this.sign !== n.sign,\r\n abs;\r\n if (n.isSmall) {\r\n if (b === 0) return Integer[0];\r\n if (b === 1) return this;\r\n if (b === -1) return this.negate();\r\n abs = Math.abs(b);\r\n if (abs < BASE) {\r\n return new BigInteger(multiplySmall(a, abs), sign);\r\n }\r\n b = smallToArray(abs);\r\n }\r\n if (useKaratsuba(a.length, b.length)) // Karatsuba is only faster for certain array sizes\r\n return new BigInteger(multiplyKaratsuba(a, b), sign);\r\n return new BigInteger(multiplyLong(a, b), sign);\r\n };\r\n\r\n BigInteger.prototype.times = BigInteger.prototype.multiply;\r\n\r\n function multiplySmallAndArray(a, b, sign) { // a >= 0\r\n if (a < BASE) {\r\n return new BigInteger(multiplySmall(b, a), sign);\r\n }\r\n return new BigInteger(multiplyLong(b, smallToArray(a)), sign);\r\n }\r\n SmallInteger.prototype._multiplyBySmall = function (a) {\r\n if (isPrecise(a.value * this.value)) {\r\n return new SmallInteger(a.value * this.value);\r\n }\r\n return multiplySmallAndArray(Math.abs(a.value), smallToArray(Math.abs(this.value)), this.sign !== a.sign);\r\n };\r\n BigInteger.prototype._multiplyBySmall = function (a) {\r\n if (a.value === 0) return Integer[0];\r\n if (a.value === 1) return this;\r\n if (a.value === -1) return this.negate();\r\n return multiplySmallAndArray(Math.abs(a.value), this.value, this.sign !== a.sign);\r\n };\r\n SmallInteger.prototype.multiply = function (v) {\r\n return parseValue(v)._multiplyBySmall(this);\r\n };\r\n SmallInteger.prototype.times = SmallInteger.prototype.multiply;\r\n\r\n NativeBigInt.prototype.multiply = function (v) {\r\n return new NativeBigInt(this.value * parseValue(v).value);\r\n }\r\n NativeBigInt.prototype.times = NativeBigInt.prototype.multiply;\r\n\r\n function square(a) {\r\n //console.assert(2 * BASE * BASE < MAX_INT);\r\n var l = a.length,\r\n r = createArray(l + l),\r\n base = BASE,\r\n product, carry, i, a_i, a_j;\r\n for (i = 0; i < l; i++) {\r\n a_i = a[i];\r\n carry = 0 - a_i * a_i;\r\n for (var j = i; j < l; j++) {\r\n a_j = a[j];\r\n product = 2 * (a_i * a_j) + r[i + j] + carry;\r\n carry = Math.floor(product / base);\r\n r[i + j] = product - carry * base;\r\n }\r\n r[i + l] = carry;\r\n }\r\n trim(r);\r\n return r;\r\n }\r\n\r\n BigInteger.prototype.square = function () {\r\n return new BigInteger(square(this.value), false);\r\n };\r\n\r\n SmallInteger.prototype.square = function () {\r\n var value = this.value * this.value;\r\n if (isPrecise(value)) return new SmallInteger(value);\r\n return new BigInteger(square(smallToArray(Math.abs(this.value))), false);\r\n };\r\n\r\n NativeBigInt.prototype.square = function (v) {\r\n return new NativeBigInt(this.value * this.value);\r\n }\r\n\r\n function divMod1(a, b) { // Left over from previous version. Performs faster than divMod2 on smaller input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n base = BASE,\r\n result = createArray(b.length),\r\n divisorMostSignificantDigit = b[b_l - 1],\r\n // normalization\r\n lambda = Math.ceil(base / (2 * divisorMostSignificantDigit)),\r\n remainder = multiplySmall(a, lambda),\r\n divisor = multiplySmall(b, lambda),\r\n quotientDigit, shift, carry, borrow, i, l, q;\r\n if (remainder.length <= a_l) remainder.push(0);\r\n divisor.push(0);\r\n divisorMostSignificantDigit = divisor[b_l - 1];\r\n for (shift = a_l - b_l; shift >= 0; shift--) {\r\n quotientDigit = base - 1;\r\n if (remainder[shift + b_l] !== divisorMostSignificantDigit) {\r\n quotientDigit = Math.floor((remainder[shift + b_l] * base + remainder[shift + b_l - 1]) / divisorMostSignificantDigit);\r\n }\r\n // quotientDigit <= base - 1\r\n carry = 0;\r\n borrow = 0;\r\n l = divisor.length;\r\n for (i = 0; i < l; i++) {\r\n carry += quotientDigit * divisor[i];\r\n q = Math.floor(carry / base);\r\n borrow += remainder[shift + i] - (carry - q * base);\r\n carry = q;\r\n if (borrow < 0) {\r\n remainder[shift + i] = borrow + base;\r\n borrow = -1;\r\n } else {\r\n remainder[shift + i] = borrow;\r\n borrow = 0;\r\n }\r\n }\r\n while (borrow !== 0) {\r\n quotientDigit -= 1;\r\n carry = 0;\r\n for (i = 0; i < l; i++) {\r\n carry += remainder[shift + i] - base + divisor[i];\r\n if (carry < 0) {\r\n remainder[shift + i] = carry + base;\r\n carry = 0;\r\n } else {\r\n remainder[shift + i] = carry;\r\n carry = 1;\r\n }\r\n }\r\n borrow += carry;\r\n }\r\n result[shift] = quotientDigit;\r\n }\r\n // denormalization\r\n remainder = divModSmall(remainder, lambda)[0];\r\n return [arrayToSmall(result), arrayToSmall(remainder)];\r\n }\r\n\r\n function divMod2(a, b) { // Implementation idea shamelessly stolen from Silent Matt's library http://silentmatt.com/biginteger/\r\n // Performs faster than divMod1 on larger input sizes.\r\n var a_l = a.length,\r\n b_l = b.length,\r\n result = [],\r\n part = [],\r\n base = BASE,\r\n guess, xlen, highx, highy, check;\r\n while (a_l) {\r\n part.unshift(a[--a_l]);\r\n trim(part);\r\n if (compareAbs(part, b) < 0) {\r\n result.push(0);\r\n continue;\r\n }\r\n xlen = part.length;\r\n highx = part[xlen - 1] * base + part[xlen - 2];\r\n highy = b[b_l - 1] * base + b[b_l - 2];\r\n if (xlen > b_l) {\r\n highx = (highx + 1) * base;\r\n }\r\n guess = Math.ceil(highx / highy);\r\n do {\r\n check = multiplySmall(b, guess);\r\n if (compareAbs(check, part) <= 0) break;\r\n guess--;\r\n } while (guess);\r\n result.push(guess);\r\n part = subtract(part, check);\r\n }\r\n result.reverse();\r\n return [arrayToSmall(result), arrayToSmall(part)];\r\n }\r\n\r\n function divModSmall(value, lambda) {\r\n var length = value.length,\r\n quotient = createArray(length),\r\n base = BASE,\r\n i, q, remainder, divisor;\r\n remainder = 0;\r\n for (i = length - 1; i >= 0; --i) {\r\n divisor = remainder * base + value[i];\r\n q = truncate(divisor / lambda);\r\n remainder = divisor - q * lambda;\r\n quotient[i] = q | 0;\r\n }\r\n return [quotient, remainder | 0];\r\n }\r\n\r\n function divModAny(self, v) {\r\n var value, n = parseValue(v);\r\n if (supportsNativeBigInt) {\r\n return [new NativeBigInt(self.value / n.value), new NativeBigInt(self.value % n.value)];\r\n }\r\n var a = self.value, b = n.value;\r\n var quotient;\r\n if (b === 0) throw new Error(\"Cannot divide by zero\");\r\n if (self.isSmall) {\r\n if (n.isSmall) {\r\n return [new SmallInteger(truncate(a / b)), new SmallInteger(a % b)];\r\n }\r\n return [Integer[0], self];\r\n }\r\n if (n.isSmall) {\r\n if (b === 1) return [self, Integer[0]];\r\n if (b == -1) return [self.negate(), Integer[0]];\r\n var abs = Math.abs(b);\r\n if (abs < BASE) {\r\n value = divModSmall(a, abs);\r\n quotient = arrayToSmall(value[0]);\r\n var remainder = value[1];\r\n if (self.sign) remainder = -remainder;\r\n if (typeof quotient === \"number\") {\r\n if (self.sign !== n.sign) quotient = -quotient;\r\n return [new SmallInteger(quotient), new SmallInteger(remainder)];\r\n }\r\n return [new BigInteger(quotient, self.sign !== n.sign), new SmallInteger(remainder)];\r\n }\r\n b = smallToArray(abs);\r\n }\r\n var comparison = compareAbs(a, b);\r\n if (comparison === -1) return [Integer[0], self];\r\n if (comparison === 0) return [Integer[self.sign === n.sign ? 1 : -1], Integer[0]];\r\n\r\n // divMod1 is faster on smaller input sizes\r\n if (a.length + b.length <= 200)\r\n value = divMod1(a, b);\r\n else value = divMod2(a, b);\r\n\r\n quotient = value[0];\r\n var qSign = self.sign !== n.sign,\r\n mod = value[1],\r\n mSign = self.sign;\r\n if (typeof quotient === \"number\") {\r\n if (qSign) quotient = -quotient;\r\n quotient = new SmallInteger(quotient);\r\n } else quotient = new BigInteger(quotient, qSign);\r\n if (typeof mod === \"number\") {\r\n if (mSign) mod = -mod;\r\n mod = new SmallInteger(mod);\r\n } else mod = new BigInteger(mod, mSign);\r\n return [quotient, mod];\r\n }\r\n\r\n BigInteger.prototype.divmod = function (v) {\r\n var result = divModAny(this, v);\r\n return {\r\n quotient: result[0],\r\n remainder: result[1]\r\n };\r\n };\r\n NativeBigInt.prototype.divmod = SmallInteger.prototype.divmod = BigInteger.prototype.divmod;\r\n\r\n\r\n BigInteger.prototype.divide = function (v) {\r\n return divModAny(this, v)[0];\r\n };\r\n NativeBigInt.prototype.over = NativeBigInt.prototype.divide = function (v) {\r\n return new NativeBigInt(this.value / parseValue(v).value);\r\n };\r\n SmallInteger.prototype.over = SmallInteger.prototype.divide = BigInteger.prototype.over = BigInteger.prototype.divide;\r\n\r\n BigInteger.prototype.mod = function (v) {\r\n return divModAny(this, v)[1];\r\n };\r\n NativeBigInt.prototype.mod = NativeBigInt.prototype.remainder = function (v) {\r\n return new NativeBigInt(this.value % parseValue(v).value);\r\n };\r\n SmallInteger.prototype.remainder = SmallInteger.prototype.mod = BigInteger.prototype.remainder = BigInteger.prototype.mod;\r\n\r\n BigInteger.prototype.pow = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value,\r\n value, x, y;\r\n if (b === 0) return Integer[1];\r\n if (a === 0) return Integer[0];\r\n if (a === 1) return Integer[1];\r\n if (a === -1) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.sign) {\r\n return Integer[0];\r\n }\r\n if (!n.isSmall) throw new Error(\"The exponent \" + n.toString() + \" is too large.\");\r\n if (this.isSmall) {\r\n if (isPrecise(value = Math.pow(a, b)))\r\n return new SmallInteger(truncate(value));\r\n }\r\n x = this;\r\n y = Integer[1];\r\n while (true) {\r\n if (b & 1 === 1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === 0) break;\r\n b /= 2;\r\n x = x.square();\r\n }\r\n return y;\r\n };\r\n SmallInteger.prototype.pow = BigInteger.prototype.pow;\r\n\r\n NativeBigInt.prototype.pow = function (v) {\r\n var n = parseValue(v);\r\n var a = this.value, b = n.value;\r\n var _0 = BigInt(0), _1 = BigInt(1), _2 = BigInt(2);\r\n if (b === _0) return Integer[1];\r\n if (a === _0) return Integer[0];\r\n if (a === _1) return Integer[1];\r\n if (a === BigInt(-1)) return n.isEven() ? Integer[1] : Integer[-1];\r\n if (n.isNegative()) return new NativeBigInt(_0);\r\n var x = this;\r\n var y = Integer[1];\r\n while (true) {\r\n if ((b & _1) === _1) {\r\n y = y.times(x);\r\n --b;\r\n }\r\n if (b === _0) break;\r\n b /= _2;\r\n x = x.square();\r\n }\r\n return y;\r\n }\r\n\r\n BigInteger.prototype.modPow = function (exp, mod) {\r\n exp = parseValue(exp);\r\n mod = parseValue(mod);\r\n if (mod.isZero()) throw new Error(\"Cannot take modPow with modulus 0\");\r\n var r = Integer[1],\r\n base = this.mod(mod);\r\n if (exp.isNegative()) {\r\n exp = exp.multiply(Integer[-1]);\r\n base = base.modInv(mod);\r\n }\r\n while (exp.isPositive()) {\r\n if (base.isZero()) return Integer[0];\r\n if (exp.isOdd()) r = r.multiply(base).mod(mod);\r\n exp = exp.divide(2);\r\n base = base.square().mod(mod);\r\n }\r\n return r;\r\n };\r\n NativeBigInt.prototype.modPow = SmallInteger.prototype.modPow = BigInteger.prototype.modPow;\r\n\r\n function compareAbs(a, b) {\r\n if (a.length !== b.length) {\r\n return a.length > b.length ? 1 : -1;\r\n }\r\n for (var i = a.length - 1; i >= 0; i--) {\r\n if (a[i] !== b[i]) return a[i] > b[i] ? 1 : -1;\r\n }\r\n return 0;\r\n }\r\n\r\n BigInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) return 1;\r\n return compareAbs(a, b);\r\n };\r\n SmallInteger.prototype.compareAbs = function (v) {\r\n var n = parseValue(v),\r\n a = Math.abs(this.value),\r\n b = n.value;\r\n if (n.isSmall) {\r\n b = Math.abs(b);\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n return -1;\r\n };\r\n NativeBigInt.prototype.compareAbs = function (v) {\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n a = a >= 0 ? a : -a;\r\n b = b >= 0 ? b : -b;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n\r\n BigInteger.prototype.compare = function (v) {\r\n // See discussion about comparison with Infinity:\r\n // https://github.com/peterolson/BigInteger.js/issues/61\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (this.sign !== n.sign) {\r\n return n.sign ? 1 : -1;\r\n }\r\n if (n.isSmall) {\r\n return this.sign ? -1 : 1;\r\n }\r\n return compareAbs(a, b) * (this.sign ? -1 : 1);\r\n };\r\n BigInteger.prototype.compareTo = BigInteger.prototype.compare;\r\n\r\n SmallInteger.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n\r\n var n = parseValue(v),\r\n a = this.value,\r\n b = n.value;\r\n if (n.isSmall) {\r\n return a == b ? 0 : a > b ? 1 : -1;\r\n }\r\n if (a < 0 !== n.sign) {\r\n return a < 0 ? -1 : 1;\r\n }\r\n return a < 0 ? 1 : -1;\r\n };\r\n SmallInteger.prototype.compareTo = SmallInteger.prototype.compare;\r\n\r\n NativeBigInt.prototype.compare = function (v) {\r\n if (v === Infinity) {\r\n return -1;\r\n }\r\n if (v === -Infinity) {\r\n return 1;\r\n }\r\n var a = this.value;\r\n var b = parseValue(v).value;\r\n return a === b ? 0 : a > b ? 1 : -1;\r\n }\r\n NativeBigInt.prototype.compareTo = NativeBigInt.prototype.compare;\r\n\r\n BigInteger.prototype.equals = function (v) {\r\n return this.compare(v) === 0;\r\n };\r\n NativeBigInt.prototype.eq = NativeBigInt.prototype.equals = SmallInteger.prototype.eq = SmallInteger.prototype.equals = BigInteger.prototype.eq = BigInteger.prototype.equals;\r\n\r\n BigInteger.prototype.notEquals = function (v) {\r\n return this.compare(v) !== 0;\r\n };\r\n NativeBigInt.prototype.neq = NativeBigInt.prototype.notEquals = SmallInteger.prototype.neq = SmallInteger.prototype.notEquals = BigInteger.prototype.neq = BigInteger.prototype.notEquals;\r\n\r\n BigInteger.prototype.greater = function (v) {\r\n return this.compare(v) > 0;\r\n };\r\n NativeBigInt.prototype.gt = NativeBigInt.prototype.greater = SmallInteger.prototype.gt = SmallInteger.prototype.greater = BigInteger.prototype.gt = BigInteger.prototype.greater;\r\n\r\n BigInteger.prototype.lesser = function (v) {\r\n return this.compare(v) < 0;\r\n };\r\n NativeBigInt.prototype.lt = NativeBigInt.prototype.lesser = SmallInteger.prototype.lt = SmallInteger.prototype.lesser = BigInteger.prototype.lt = BigInteger.prototype.lesser;\r\n\r\n BigInteger.prototype.greaterOrEquals = function (v) {\r\n return this.compare(v) >= 0;\r\n };\r\n NativeBigInt.prototype.geq = NativeBigInt.prototype.greaterOrEquals = SmallInteger.prototype.geq = SmallInteger.prototype.greaterOrEquals = BigInteger.prototype.geq = BigInteger.prototype.greaterOrEquals;\r\n\r\n BigInteger.prototype.lesserOrEquals = function (v) {\r\n return this.compare(v) <= 0;\r\n };\r\n NativeBigInt.prototype.leq = NativeBigInt.prototype.lesserOrEquals = SmallInteger.prototype.leq = SmallInteger.prototype.lesserOrEquals = BigInteger.prototype.leq = BigInteger.prototype.lesserOrEquals;\r\n\r\n BigInteger.prototype.isEven = function () {\r\n return (this.value[0] & 1) === 0;\r\n };\r\n SmallInteger.prototype.isEven = function () {\r\n return (this.value & 1) === 0;\r\n };\r\n NativeBigInt.prototype.isEven = function () {\r\n return (this.value & BigInt(1)) === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isOdd = function () {\r\n return (this.value[0] & 1) === 1;\r\n };\r\n SmallInteger.prototype.isOdd = function () {\r\n return (this.value & 1) === 1;\r\n };\r\n NativeBigInt.prototype.isOdd = function () {\r\n return (this.value & BigInt(1)) === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isPositive = function () {\r\n return !this.sign;\r\n };\r\n SmallInteger.prototype.isPositive = function () {\r\n return this.value > 0;\r\n };\r\n NativeBigInt.prototype.isPositive = SmallInteger.prototype.isPositive;\r\n\r\n BigInteger.prototype.isNegative = function () {\r\n return this.sign;\r\n };\r\n SmallInteger.prototype.isNegative = function () {\r\n return this.value < 0;\r\n };\r\n NativeBigInt.prototype.isNegative = SmallInteger.prototype.isNegative;\r\n\r\n BigInteger.prototype.isUnit = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isUnit = function () {\r\n return Math.abs(this.value) === 1;\r\n };\r\n NativeBigInt.prototype.isUnit = function () {\r\n return this.abs().value === BigInt(1);\r\n }\r\n\r\n BigInteger.prototype.isZero = function () {\r\n return false;\r\n };\r\n SmallInteger.prototype.isZero = function () {\r\n return this.value === 0;\r\n };\r\n NativeBigInt.prototype.isZero = function () {\r\n return this.value === BigInt(0);\r\n }\r\n\r\n BigInteger.prototype.isDivisibleBy = function (v) {\r\n var n = parseValue(v);\r\n if (n.isZero()) return false;\r\n if (n.isUnit()) return true;\r\n if (n.compareAbs(2) === 0) return this.isEven();\r\n return this.mod(n).isZero();\r\n };\r\n NativeBigInt.prototype.isDivisibleBy = SmallInteger.prototype.isDivisibleBy = BigInteger.prototype.isDivisibleBy;\r\n\r\n function isBasicPrime(v) {\r\n var n = v.abs();\r\n if (n.isUnit()) return false;\r\n if (n.equals(2) || n.equals(3) || n.equals(5)) return true;\r\n if (n.isEven() || n.isDivisibleBy(3) || n.isDivisibleBy(5)) return false;\r\n if (n.lesser(49)) return true;\r\n // we don't know if it's prime: let the other functions figure it out\r\n }\r\n\r\n function millerRabinTest(n, a) {\r\n var nPrev = n.prev(),\r\n b = nPrev,\r\n r = 0,\r\n d, t, i, x;\r\n while (b.isEven()) b = b.divide(2), r++;\r\n next: for (i = 0; i < a.length; i++) {\r\n if (n.lesser(a[i])) continue;\r\n x = bigInt(a[i]).modPow(b, n);\r\n if (x.isUnit() || x.equals(nPrev)) continue;\r\n for (d = r - 1; d != 0; d--) {\r\n x = x.square().mod(n);\r\n if (x.isUnit()) return false;\r\n if (x.equals(nPrev)) continue next;\r\n }\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n // Set \"strict\" to true to force GRH-supported lower bound of 2*log(N)^2\r\n BigInteger.prototype.isPrime = function (strict) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var bits = n.bitLength();\r\n if (bits <= 64)\r\n return millerRabinTest(n, [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37]);\r\n var logN = Math.log(2) * bits.toJSNumber();\r\n var t = Math.ceil((strict === true) ? (2 * Math.pow(logN, 2)) : logN);\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt(i + 2));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isPrime = SmallInteger.prototype.isPrime = BigInteger.prototype.isPrime;\r\n\r\n BigInteger.prototype.isProbablePrime = function (iterations, rng) {\r\n var isPrime = isBasicPrime(this);\r\n if (isPrime !== undefined) return isPrime;\r\n var n = this.abs();\r\n var t = iterations === undefined ? 5 : iterations;\r\n for (var a = [], i = 0; i < t; i++) {\r\n a.push(bigInt.randBetween(2, n.minus(2), rng));\r\n }\r\n return millerRabinTest(n, a);\r\n };\r\n NativeBigInt.prototype.isProbablePrime = SmallInteger.prototype.isProbablePrime = BigInteger.prototype.isProbablePrime;\r\n\r\n BigInteger.prototype.modInv = function (n) {\r\n var t = bigInt.zero, newT = bigInt.one, r = parseValue(n), newR = this.abs(), q, lastT, lastR;\r\n while (!newR.isZero()) {\r\n q = r.divide(newR);\r\n lastT = t;\r\n lastR = r;\r\n t = newT;\r\n r = newR;\r\n newT = lastT.subtract(q.multiply(newT));\r\n newR = lastR.subtract(q.multiply(newR));\r\n }\r\n if (!r.isUnit()) throw new Error(this.toString() + \" and \" + n.toString() + \" are not co-prime\");\r\n if (t.compare(0) === -1) {\r\n t = t.add(n);\r\n }\r\n if (this.isNegative()) {\r\n return t.negate();\r\n }\r\n return t;\r\n };\r\n\r\n NativeBigInt.prototype.modInv = SmallInteger.prototype.modInv = BigInteger.prototype.modInv;\r\n\r\n BigInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return subtractSmall(value, 1, this.sign);\r\n }\r\n return new BigInteger(addSmall(value, 1), this.sign);\r\n };\r\n SmallInteger.prototype.next = function () {\r\n var value = this.value;\r\n if (value + 1 < MAX_INT) return new SmallInteger(value + 1);\r\n return new BigInteger(MAX_INT_ARR, false);\r\n };\r\n NativeBigInt.prototype.next = function () {\r\n return new NativeBigInt(this.value + BigInt(1));\r\n }\r\n\r\n BigInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (this.sign) {\r\n return new BigInteger(addSmall(value, 1), true);\r\n }\r\n return subtractSmall(value, 1, this.sign);\r\n };\r\n SmallInteger.prototype.prev = function () {\r\n var value = this.value;\r\n if (value - 1 > -MAX_INT) return new SmallInteger(value - 1);\r\n return new BigInteger(MAX_INT_ARR, true);\r\n };\r\n NativeBigInt.prototype.prev = function () {\r\n return new NativeBigInt(this.value - BigInt(1));\r\n }\r\n\r\n var powersOfTwo = [1];\r\n while (2 * powersOfTwo[powersOfTwo.length - 1] <= BASE) powersOfTwo.push(2 * powersOfTwo[powersOfTwo.length - 1]);\r\n var powers2Length = powersOfTwo.length, highestPower2 = powersOfTwo[powers2Length - 1];\r\n\r\n function shift_isSmall(n) {\r\n return Math.abs(n) <= BASE;\r\n }\r\n\r\n BigInteger.prototype.shiftLeft = function (v) {\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftRight(-n);\r\n var result = this;\r\n if (result.isZero()) return result;\r\n while (n >= powers2Length) {\r\n result = result.multiply(highestPower2);\r\n n -= powers2Length - 1;\r\n }\r\n return result.multiply(powersOfTwo[n]);\r\n };\r\n NativeBigInt.prototype.shiftLeft = SmallInteger.prototype.shiftLeft = BigInteger.prototype.shiftLeft;\r\n\r\n BigInteger.prototype.shiftRight = function (v) {\r\n var remQuo;\r\n var n = parseValue(v).toJSNumber();\r\n if (!shift_isSmall(n)) {\r\n throw new Error(String(n) + \" is too large for shifting.\");\r\n }\r\n if (n < 0) return this.shiftLeft(-n);\r\n var result = this;\r\n while (n >= powers2Length) {\r\n if (result.isZero() || (result.isNegative() && result.isUnit())) return result;\r\n remQuo = divModAny(result, highestPower2);\r\n result = remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n n -= powers2Length - 1;\r\n }\r\n remQuo = divModAny(result, powersOfTwo[n]);\r\n return remQuo[1].isNegative() ? remQuo[0].prev() : remQuo[0];\r\n };\r\n NativeBigInt.prototype.shiftRight = SmallInteger.prototype.shiftRight = BigInteger.prototype.shiftRight;\r\n\r\n function bitwise(x, y, fn) {\r\n y = parseValue(y);\r\n var xSign = x.isNegative(), ySign = y.isNegative();\r\n var xRem = xSign ? x.not() : x,\r\n yRem = ySign ? y.not() : y;\r\n var xDigit = 0, yDigit = 0;\r\n var xDivMod = null, yDivMod = null;\r\n var result = [];\r\n while (!xRem.isZero() || !yRem.isZero()) {\r\n xDivMod = divModAny(xRem, highestPower2);\r\n xDigit = xDivMod[1].toJSNumber();\r\n if (xSign) {\r\n xDigit = highestPower2 - 1 - xDigit; // two's complement for negative numbers\r\n }\r\n\r\n yDivMod = divModAny(yRem, highestPower2);\r\n yDigit = yDivMod[1].toJSNumber();\r\n if (ySign) {\r\n yDigit = highestPower2 - 1 - yDigit; // two's complement for negative numbers\r\n }\r\n\r\n xRem = xDivMod[0];\r\n yRem = yDivMod[0];\r\n result.push(fn(xDigit, yDigit));\r\n }\r\n var sum = fn(xSign ? 1 : 0, ySign ? 1 : 0) !== 0 ? bigInt(-1) : bigInt(0);\r\n for (var i = result.length - 1; i >= 0; i -= 1) {\r\n sum = sum.multiply(highestPower2).add(bigInt(result[i]));\r\n }\r\n return sum;\r\n }\r\n\r\n BigInteger.prototype.not = function () {\r\n return this.negate().prev();\r\n };\r\n NativeBigInt.prototype.not = SmallInteger.prototype.not = BigInteger.prototype.not;\r\n\r\n BigInteger.prototype.and = function (n) {\r\n return bitwise(this, n, function (a, b) { return a & b; });\r\n };\r\n NativeBigInt.prototype.and = SmallInteger.prototype.and = BigInteger.prototype.and;\r\n\r\n BigInteger.prototype.or = function (n) {\r\n return bitwise(this, n, function (a, b) { return a | b; });\r\n };\r\n NativeBigInt.prototype.or = SmallInteger.prototype.or = BigInteger.prototype.or;\r\n\r\n BigInteger.prototype.xor = function (n) {\r\n return bitwise(this, n, function (a, b) { return a ^ b; });\r\n };\r\n NativeBigInt.prototype.xor = SmallInteger.prototype.xor = BigInteger.prototype.xor;\r\n\r\n var LOBMASK_I = 1 << 30, LOBMASK_BI = (BASE & -BASE) * (BASE & -BASE) | LOBMASK_I;\r\n function roughLOB(n) { // get lowestOneBit (rough)\r\n // SmallInteger: return Min(lowestOneBit(n), 1 << 30)\r\n // BigInteger: return Min(lowestOneBit(n), 1 << 14) [BASE=1e7]\r\n var v = n.value,\r\n x = typeof v === \"number\" ? v | LOBMASK_I :\r\n typeof v === \"bigint\" ? v | BigInt(LOBMASK_I) :\r\n v[0] + v[1] * BASE | LOBMASK_BI;\r\n return x & -x;\r\n }\r\n\r\n function integerLogarithm(value, base) {\r\n if (base.compareTo(value) <= 0) {\r\n var tmp = integerLogarithm(value, base.square(base));\r\n var p = tmp.p;\r\n var e = tmp.e;\r\n var t = p.multiply(base);\r\n return t.compareTo(value) <= 0 ? { p: t, e: e * 2 + 1 } : { p: p, e: e * 2 };\r\n }\r\n return { p: bigInt(1), e: 0 };\r\n }\r\n\r\n BigInteger.prototype.bitLength = function () {\r\n var n = this;\r\n if (n.compareTo(bigInt(0)) < 0) {\r\n n = n.negate().subtract(bigInt(1));\r\n }\r\n if (n.compareTo(bigInt(0)) === 0) {\r\n return bigInt(0);\r\n }\r\n return bigInt(integerLogarithm(n, bigInt(2)).e).add(bigInt(1));\r\n }\r\n NativeBigInt.prototype.bitLength = SmallInteger.prototype.bitLength = BigInteger.prototype.bitLength;\r\n\r\n function max(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.greater(b) ? a : b;\r\n }\r\n function min(a, b) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n return a.lesser(b) ? a : b;\r\n }\r\n function gcd(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n if (a.equals(b)) return a;\r\n if (a.isZero()) return b;\r\n if (b.isZero()) return a;\r\n var c = Integer[1], d, t;\r\n while (a.isEven() && b.isEven()) {\r\n d = min(roughLOB(a), roughLOB(b));\r\n a = a.divide(d);\r\n b = b.divide(d);\r\n c = c.multiply(d);\r\n }\r\n while (a.isEven()) {\r\n a = a.divide(roughLOB(a));\r\n }\r\n do {\r\n while (b.isEven()) {\r\n b = b.divide(roughLOB(b));\r\n }\r\n if (a.greater(b)) {\r\n t = b; b = a; a = t;\r\n }\r\n b = b.subtract(a);\r\n } while (!b.isZero());\r\n return c.isUnit() ? a : a.multiply(c);\r\n }\r\n function lcm(a, b) {\r\n a = parseValue(a).abs();\r\n b = parseValue(b).abs();\r\n return a.divide(gcd(a, b)).multiply(b);\r\n }\r\n function randBetween(a, b, rng) {\r\n a = parseValue(a);\r\n b = parseValue(b);\r\n var usedRNG = rng || Math.random;\r\n var low = min(a, b), high = max(a, b);\r\n var range = high.subtract(low).add(1);\r\n if (range.isSmall) return low.add(Math.floor(usedRNG() * range));\r\n var digits = toBase(range, BASE).value;\r\n var result = [], restricted = true;\r\n for (var i = 0; i < digits.length; i++) {\r\n var top = restricted ? digits[i] + (i + 1 < digits.length ? digits[i + 1] / BASE : 0) : BASE;\r\n var digit = truncate(usedRNG() * top);\r\n result.push(digit);\r\n if (digit < digits[i]) restricted = false;\r\n }\r\n return low.add(Integer.fromArray(result, BASE, false));\r\n }\r\n\r\n var parseBase = function (text, base, alphabet, caseSensitive) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n text = String(text);\r\n if (!caseSensitive) {\r\n text = text.toLowerCase();\r\n alphabet = alphabet.toLowerCase();\r\n }\r\n var length = text.length;\r\n var i;\r\n var absBase = Math.abs(base);\r\n var alphabetValues = {};\r\n for (i = 0; i < alphabet.length; i++) {\r\n alphabetValues[alphabet[i]] = i;\r\n }\r\n for (i = 0; i < length; i++) {\r\n var c = text[i];\r\n if (c === \"-\") continue;\r\n if (c in alphabetValues) {\r\n if (alphabetValues[c] >= absBase) {\r\n if (c === \"1\" && absBase === 1) continue;\r\n throw new Error(c + \" is not a valid digit in base \" + base + \".\");\r\n }\r\n }\r\n }\r\n base = parseValue(base);\r\n var digits = [];\r\n var isNegative = text[0] === \"-\";\r\n for (i = isNegative ? 1 : 0; i < text.length; i++) {\r\n var c = text[i];\r\n if (c in alphabetValues) digits.push(parseValue(alphabetValues[c]));\r\n else if (c === \"<\") {\r\n var start = i;\r\n do { i++; } while (text[i] !== \">\" && i < text.length);\r\n digits.push(parseValue(text.slice(start + 1, i)));\r\n }\r\n else throw new Error(c + \" is not a valid character\");\r\n }\r\n return parseBaseFromArray(digits, base, isNegative);\r\n };\r\n\r\n function parseBaseFromArray(digits, base, isNegative) {\r\n var val = Integer[0], pow = Integer[1], i;\r\n for (i = digits.length - 1; i >= 0; i--) {\r\n val = val.add(digits[i].times(pow));\r\n pow = pow.times(base);\r\n }\r\n return isNegative ? val.negate() : val;\r\n }\r\n\r\n function stringify(digit, alphabet) {\r\n alphabet = alphabet || DEFAULT_ALPHABET;\r\n if (digit < alphabet.length) {\r\n return alphabet[digit];\r\n }\r\n return \"<\" + digit + \">\";\r\n }\r\n\r\n function toBase(n, base) {\r\n base = bigInt(base);\r\n if (base.isZero()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n throw new Error(\"Cannot convert nonzero numbers to base 0.\");\r\n }\r\n if (base.equals(-1)) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n if (n.isNegative())\r\n return {\r\n value: [].concat.apply([], Array.apply(null, Array(-n.toJSNumber()))\r\n .map(Array.prototype.valueOf, [1, 0])\r\n ),\r\n isNegative: false\r\n };\r\n\r\n var arr = Array.apply(null, Array(n.toJSNumber() - 1))\r\n .map(Array.prototype.valueOf, [0, 1]);\r\n arr.unshift([1]);\r\n return {\r\n value: [].concat.apply([], arr),\r\n isNegative: false\r\n };\r\n }\r\n\r\n var neg = false;\r\n if (n.isNegative() && base.isPositive()) {\r\n neg = true;\r\n n = n.abs();\r\n }\r\n if (base.isUnit()) {\r\n if (n.isZero()) return { value: [0], isNegative: false };\r\n\r\n return {\r\n value: Array.apply(null, Array(n.toJSNumber()))\r\n .map(Number.prototype.valueOf, 1),\r\n isNegative: neg\r\n };\r\n }\r\n var out = [];\r\n var left = n, divmod;\r\n while (left.isNegative() || left.compareAbs(base) >= 0) {\r\n divmod = left.divmod(base);\r\n left = divmod.quotient;\r\n var digit = divmod.remainder;\r\n if (digit.isNegative()) {\r\n digit = base.minus(digit).abs();\r\n left = left.next();\r\n }\r\n out.push(digit.toJSNumber());\r\n }\r\n out.push(left.toJSNumber());\r\n return { value: out.reverse(), isNegative: neg };\r\n }\r\n\r\n function toBaseString(n, base, alphabet) {\r\n var arr = toBase(n, base);\r\n return (arr.isNegative ? \"-\" : \"\") + arr.value.map(function (x) {\r\n return stringify(x, alphabet);\r\n }).join('');\r\n }\r\n\r\n BigInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n SmallInteger.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n NativeBigInt.prototype.toArray = function (radix) {\r\n return toBase(this, radix);\r\n };\r\n\r\n BigInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix !== 10 || alphabet) return toBaseString(this, radix, alphabet);\r\n var v = this.value, l = v.length, str = String(v[--l]), zeros = \"0000000\", digit;\r\n while (--l >= 0) {\r\n digit = String(v[l]);\r\n str += zeros.slice(digit.length) + digit;\r\n }\r\n var sign = this.sign ? \"-\" : \"\";\r\n return sign + str;\r\n };\r\n\r\n SmallInteger.prototype.toString = function (radix, alphabet) {\r\n if (radix === undefined) radix = 10;\r\n if (radix != 10 || alphabet) return toBaseString(this, radix, alphabet);\r\n return String(this.value);\r\n };\r\n\r\n NativeBigInt.prototype.toString = SmallInteger.prototype.toString;\r\n\r\n NativeBigInt.prototype.toJSON = BigInteger.prototype.toJSON = SmallInteger.prototype.toJSON = function () { return this.toString(); }\r\n\r\n BigInteger.prototype.valueOf = function () {\r\n return parseInt(this.toString(), 10);\r\n };\r\n BigInteger.prototype.toJSNumber = BigInteger.prototype.valueOf;\r\n\r\n SmallInteger.prototype.valueOf = function () {\r\n return this.value;\r\n };\r\n SmallInteger.prototype.toJSNumber = SmallInteger.prototype.valueOf;\r\n NativeBigInt.prototype.valueOf = NativeBigInt.prototype.toJSNumber = function () {\r\n return parseInt(this.toString(), 10);\r\n }\r\n\r\n function parseStringValue(v) {\r\n if (isPrecise(+v)) {\r\n var x = +v;\r\n if (x === truncate(x))\r\n return supportsNativeBigInt ? new NativeBigInt(BigInt(x)) : new SmallInteger(x);\r\n throw new Error(\"Invalid integer: \" + v);\r\n }\r\n var sign = v[0] === \"-\";\r\n if (sign) v = v.slice(1);\r\n var split = v.split(/e/i);\r\n if (split.length > 2) throw new Error(\"Invalid integer: \" + split.join(\"e\"));\r\n if (split.length === 2) {\r\n var exp = split[1];\r\n if (exp[0] === \"+\") exp = exp.slice(1);\r\n exp = +exp;\r\n if (exp !== truncate(exp) || !isPrecise(exp)) throw new Error(\"Invalid integer: \" + exp + \" is not a valid exponent.\");\r\n var text = split[0];\r\n var decimalPlace = text.indexOf(\".\");\r\n if (decimalPlace >= 0) {\r\n exp -= text.length - decimalPlace - 1;\r\n text = text.slice(0, decimalPlace) + text.slice(decimalPlace + 1);\r\n }\r\n if (exp < 0) throw new Error(\"Cannot include negative exponent part for integers\");\r\n text += (new Array(exp + 1)).join(\"0\");\r\n v = text;\r\n }\r\n var isValid = /^([0-9][0-9]*)$/.test(v);\r\n if (!isValid) throw new Error(\"Invalid integer: \" + v);\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(sign ? \"-\" + v : v));\r\n }\r\n var r = [], max = v.length, l = LOG_BASE, min = max - l;\r\n while (max > 0) {\r\n r.push(+v.slice(min, max));\r\n min -= l;\r\n if (min < 0) min = 0;\r\n max -= l;\r\n }\r\n trim(r);\r\n return new BigInteger(r, sign);\r\n }\r\n\r\n function parseNumberValue(v) {\r\n if (supportsNativeBigInt) {\r\n return new NativeBigInt(BigInt(v));\r\n }\r\n if (isPrecise(v)) {\r\n if (v !== truncate(v)) throw new Error(v + \" is not an integer.\");\r\n return new SmallInteger(v);\r\n }\r\n return parseStringValue(v.toString());\r\n }\r\n\r\n function parseValue(v) {\r\n if (typeof v === \"number\") {\r\n return parseNumberValue(v);\r\n }\r\n if (typeof v === \"string\") {\r\n return parseStringValue(v);\r\n }\r\n if (typeof v === \"bigint\") {\r\n return new NativeBigInt(v);\r\n }\r\n return v;\r\n }\r\n // Pre-define numbers in range [-999,999]\r\n for (var i = 0; i < 1000; i++) {\r\n Integer[i] = parseValue(i);\r\n if (i > 0) Integer[-i] = parseValue(-i);\r\n }\r\n // Backwards compatibility\r\n Integer.one = Integer[1];\r\n Integer.zero = Integer[0];\r\n Integer.minusOne = Integer[-1];\r\n Integer.max = max;\r\n Integer.min = min;\r\n Integer.gcd = gcd;\r\n Integer.lcm = lcm;\r\n Integer.isInstance = function (x) { return x instanceof BigInteger || x instanceof SmallInteger || x instanceof NativeBigInt; };\r\n Integer.randBetween = randBetween;\r\n\r\n Integer.fromArray = function (digits, base, isNegative) {\r\n return parseBaseFromArray(digits.map(parseValue), parseValue(base || 10), isNegative);\r\n };\r\n\r\n return Integer;\r\n})();\r\n\r\n// Node.js check\r\nif (typeof module !== \"undefined\" && module.hasOwnProperty(\"exports\")) {\r\n module.exports = bigInt;\r\n}\r\n\r\n//amd check\r\nif (typeof define === \"function\" && define.amd) {\r\n define( function () {\r\n return bigInt;\r\n });\r\n}\r\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","module.exports = intersect;\n\n/**\n * Original authors: Mukesh Prasad, Appeared in Graphics Gem II book\n * http://www.opensource.apple.com/source/graphviz/graphviz-498/graphviz/dynagraph/common/xlines.c\n * and adopted to javascript version by Andrei Kashcha.\n *\n * This function computes whether two line segments,\n * respectively joining the input points (x1,y1) -- (x2,y2)\n * and the input points (x3,y3) -- (x4,y4) intersect.\n * If the lines intersect, the output variables x, y are\n * set to coordinates of the point of intersection.\n *\n * @param {Number} x1 First line segment coordinates\n * @param {Number} y1 First line segment coordinates\n * @param {Number} x2 First line segment coordinates\n * @param {Number} x2 First line segment coordinates\n *\n * @param {Number} x3 Second line segment coordinates\n * @param {Number} y3 Second line segment coordinates\n * @param {Number} x4 Second line segment coordinates\n * @param {Number} x4 Second line segment coordinates\n *\n * @return {Object} x, y coordinates of intersection point or falsy value if no\n * intersection found..\n */\nfunction intersect(\n x1, y1, x2, y2, // first line segment\n x3, y3, x4, y4 // second line segment\n) {\n\n var a1, a2, b1, b2, c1, c2, /* Coefficients of line eqns. */\n r1, r2, r3, r4, /* 'Sign' values */\n denom, offset, num, /* Intermediate values */\n result = {\n x: 0,\n y: 0\n };\n\n /* Compute a1, b1, c1, where line joining points 1 and 2\n * is \"a1 x + b1 y + c1 = 0\".\n */\n a1 = y2 - y1;\n b1 = x1 - x2;\n c1 = x2 * y1 - x1 * y2;\n\n /* Compute r3 and r4.\n */\n r3 = a1 * x3 + b1 * y3 + c1;\n r4 = a1 * x4 + b1 * y4 + c1;\n\n /* Check signs of r3 and r4. If both point 3 and point 4 lie on\n * same side of line 1, the line segments do not intersect.\n */\n\n if (r3 !== 0 && r4 !== 0 && ((r3 >= 0) === (r4 >= 4))) {\n return null; //no intersection.\n }\n\n /* Compute a2, b2, c2 */\n a2 = y4 - y3;\n b2 = x3 - x4;\n c2 = x4 * y3 - x3 * y4;\n\n /* Compute r1 and r2 */\n\n r1 = a2 * x1 + b2 * y1 + c2;\n r2 = a2 * x2 + b2 * y2 + c2;\n\n /* Check signs of r1 and r2. If both point 1 and point 2 lie\n * on same side of second line segment, the line segments do\n * not intersect.\n */\n if (r1 !== 0 && r2 !== 0 && ((r1 >= 0) === (r2 >= 0))) {\n return null; // no intersection;\n }\n /* Line segments intersect: compute intersection point.\n */\n\n denom = a1 * b2 - a2 * b1;\n if (denom === 0) {\n return null; // Actually collinear..\n }\n\n offset = denom < 0 ? -denom / 2 : denom / 2;\n offset = 0.0;\n\n /* The denom/2 is to get rounding instead of truncating. It\n * is added or subtracted to the numerator, depending upon the\n * sign of the numerator.\n */\n num = b1 * c2 - b2 * c1;\n result.x = (num < 0 ? num - offset : num + offset) / denom;\n\n num = a2 * c1 - a1 * c2;\n result.y = (num < 0 ? num - offset : num + offset) / denom;\n\n return result;\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","// HumanizeDuration.js - https://git.io/j0HgmQ\n\n/* global define, module */\n\n(function () {\n // This has to be defined separately because of a bug: we want to alias\n // `gr` and `el` for backwards-compatiblity. In a breaking change, we can\n // remove `gr` entirely.\n // See https://github.com/EvanHahn/HumanizeDuration.js/issues/143 for more.\n var greek = {\n y: function (c) {\n return c === 1 ? \"χρόνος\" : \"χρόνια\";\n },\n mo: function (c) {\n return c === 1 ? \"μήνας\" : \"μήνες\";\n },\n w: function (c) {\n return c === 1 ? \"εβδομάδα\" : \"εβδομάδες\";\n },\n d: function (c) {\n return c === 1 ? \"μέρα\" : \"μέρες\";\n },\n h: function (c) {\n return c === 1 ? \"ώρα\" : \"ώρες\";\n },\n m: function (c) {\n return c === 1 ? \"λεπτό\" : \"λεπτά\";\n },\n s: function (c) {\n return c === 1 ? \"δευτερόλεπτο\" : \"δευτερόλεπτα\";\n },\n ms: function (c) {\n return (c === 1 ? \"χιλιοστό\" : \"χιλιοστά\") + \" του δευτερολέπτου\";\n },\n decimal: \",\"\n };\n\n var ARABIC_DIGITS = [\"۰\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"];\n\n var LANGUAGES = {\n af: {\n y: \"jaar\",\n mo: function (c) {\n return \"maand\" + (c === 1 ? \"\" : \"e\");\n },\n w: function (c) {\n return c === 1 ? \"week\" : \"weke\";\n },\n d: function (c) {\n return c === 1 ? \"dag\" : \"dae\";\n },\n h: function (c) {\n return c === 1 ? \"uur\" : \"ure\";\n },\n m: function (c) {\n return c === 1 ? \"minuut\" : \"minute\";\n },\n s: function (c) {\n return \"sekonde\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"millisekonde\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n ar: {\n y: function (c) {\n return [\"سنة\", \"سنتان\", \"سنوات\"][getArabicForm(c)];\n },\n mo: function (c) {\n return [\"شهر\", \"شهران\", \"أشهر\"][getArabicForm(c)];\n },\n w: function (c) {\n return [\"أسبوع\", \"أسبوعين\", \"أسابيع\"][getArabicForm(c)];\n },\n d: function (c) {\n return [\"يوم\", \"يومين\", \"أيام\"][getArabicForm(c)];\n },\n h: function (c) {\n return [\"ساعة\", \"ساعتين\", \"ساعات\"][getArabicForm(c)];\n },\n m: function (c) {\n return [\"دقيقة\", \"دقيقتان\", \"دقائق\"][getArabicForm(c)];\n },\n s: function (c) {\n return [\"ثانية\", \"ثانيتان\", \"ثواني\"][getArabicForm(c)];\n },\n ms: function (c) {\n return [\"جزء من الثانية\", \"جزآن من الثانية\", \"أجزاء من الثانية\"][\n getArabicForm(c)\n ];\n },\n decimal: \",\",\n delimiter: \" و \",\n _formatCount: function (count, decimal) {\n var replacements = assign(ARABIC_DIGITS, { \".\": decimal });\n var characters = count.toString().split(\"\");\n for (var i = 0; i < characters.length; i++) {\n var character = characters[i];\n if (has(replacements, character)) {\n characters[i] = replacements[character];\n }\n }\n return characters.join(\"\");\n }\n },\n bg: {\n y: function (c) {\n return [\"години\", \"година\", \"години\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"месеца\", \"месец\", \"месеца\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"седмици\", \"седмица\", \"седмици\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"дни\", \"ден\", \"дни\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"часа\", \"час\", \"часа\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"минути\", \"минута\", \"минути\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунди\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"милисекунди\", \"милисекунда\", \"милисекунди\"][getSlavicForm(c)];\n },\n decimal: \",\"\n },\n bn: {\n y: \"বছর\",\n mo: \"মাস\",\n w: \"সপ্তাহ\",\n d: \"দিন\",\n h: \"ঘন্টা\",\n m: \"মিনিট\",\n s: \"সেকেন্ড\",\n ms: \"মিলিসেকেন্ড\"\n },\n ca: {\n y: function (c) {\n return \"any\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return \"mes\" + (c === 1 ? \"\" : \"os\");\n },\n w: function (c) {\n return \"setman\" + (c === 1 ? \"a\" : \"es\");\n },\n d: function (c) {\n return \"di\" + (c === 1 ? \"a\" : \"es\");\n },\n h: function (c) {\n return \"hor\" + (c === 1 ? \"a\" : \"es\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"segon\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"milisegon\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n cs: {\n y: function (c) {\n return [\"rok\", \"roku\", \"roky\", \"let\"][getCzechOrSlovakForm(c)];\n },\n mo: function (c) {\n return [\"měsíc\", \"měsíce\", \"měsíce\", \"měsíců\"][getCzechOrSlovakForm(c)];\n },\n w: function (c) {\n return [\"týden\", \"týdne\", \"týdny\", \"týdnů\"][getCzechOrSlovakForm(c)];\n },\n d: function (c) {\n return [\"den\", \"dne\", \"dny\", \"dní\"][getCzechOrSlovakForm(c)];\n },\n h: function (c) {\n return [\"hodina\", \"hodiny\", \"hodiny\", \"hodin\"][getCzechOrSlovakForm(c)];\n },\n m: function (c) {\n return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getCzechOrSlovakForm(c)];\n },\n s: function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][\n getCzechOrSlovakForm(c)\n ];\n },\n ms: function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n getCzechOrSlovakForm(c)\n ];\n },\n decimal: \",\"\n },\n cy: {\n y: \"flwyddyn\",\n mo: \"mis\",\n w: \"wythnos\",\n d: \"diwrnod\",\n h: \"awr\",\n m: \"munud\",\n s: \"eiliad\",\n ms: \"milieiliad\"\n },\n da: {\n y: \"år\",\n mo: function (c) {\n return \"måned\" + (c === 1 ? \"\" : \"er\");\n },\n w: function (c) {\n return \"uge\" + (c === 1 ? \"\" : \"r\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"e\");\n },\n h: function (c) {\n return \"time\" + (c === 1 ? \"\" : \"r\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"ter\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n decimal: \",\"\n },\n de: {\n y: function (c) {\n return \"Jahr\" + (c === 1 ? \"\" : \"e\");\n },\n mo: function (c) {\n return \"Monat\" + (c === 1 ? \"\" : \"e\");\n },\n w: function (c) {\n return \"Woche\" + (c === 1 ? \"\" : \"n\");\n },\n d: function (c) {\n return \"Tag\" + (c === 1 ? \"\" : \"e\");\n },\n h: function (c) {\n return \"Stunde\" + (c === 1 ? \"\" : \"n\");\n },\n m: function (c) {\n return \"Minute\" + (c === 1 ? \"\" : \"n\");\n },\n s: function (c) {\n return \"Sekunde\" + (c === 1 ? \"\" : \"n\");\n },\n ms: function (c) {\n return \"Millisekunde\" + (c === 1 ? \"\" : \"n\");\n },\n decimal: \",\"\n },\n el: greek,\n en: {\n y: function (c) {\n return \"year\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return \"month\" + (c === 1 ? \"\" : \"s\");\n },\n w: function (c) {\n return \"week\" + (c === 1 ? \"\" : \"s\");\n },\n d: function (c) {\n return \"day\" + (c === 1 ? \"\" : \"s\");\n },\n h: function (c) {\n return \"hour\" + (c === 1 ? \"\" : \"s\");\n },\n m: function (c) {\n return \"minute\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"second\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"millisecond\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \".\"\n },\n eo: {\n y: function (c) {\n return \"jaro\" + (c === 1 ? \"\" : \"j\");\n },\n mo: function (c) {\n return \"monato\" + (c === 1 ? \"\" : \"j\");\n },\n w: function (c) {\n return \"semajno\" + (c === 1 ? \"\" : \"j\");\n },\n d: function (c) {\n return \"tago\" + (c === 1 ? \"\" : \"j\");\n },\n h: function (c) {\n return \"horo\" + (c === 1 ? \"\" : \"j\");\n },\n m: function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"j\");\n },\n s: function (c) {\n return \"sekundo\" + (c === 1 ? \"\" : \"j\");\n },\n ms: function (c) {\n return \"milisekundo\" + (c === 1 ? \"\" : \"j\");\n },\n decimal: \",\"\n },\n es: {\n y: function (c) {\n return \"año\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return \"mes\" + (c === 1 ? \"\" : \"es\");\n },\n w: function (c) {\n return \"semana\" + (c === 1 ? \"\" : \"s\");\n },\n d: function (c) {\n return \"día\" + (c === 1 ? \"\" : \"s\");\n },\n h: function (c) {\n return \"hora\" + (c === 1 ? \"\" : \"s\");\n },\n m: function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"segundo\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"milisegundo\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n et: {\n y: function (c) {\n return \"aasta\" + (c === 1 ? \"\" : \"t\");\n },\n mo: function (c) {\n return \"kuu\" + (c === 1 ? \"\" : \"d\");\n },\n w: function (c) {\n return \"nädal\" + (c === 1 ? \"\" : \"at\");\n },\n d: function (c) {\n return \"päev\" + (c === 1 ? \"\" : \"a\");\n },\n h: function (c) {\n return \"tund\" + (c === 1 ? \"\" : \"i\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"it\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"it\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"it\");\n },\n decimal: \",\"\n },\n eu: {\n y: \"urte\",\n mo: \"hilabete\",\n w: \"aste\",\n d: \"egun\",\n h: \"ordu\",\n m: \"minutu\",\n s: \"segundo\",\n ms: \"milisegundo\",\n decimal: \",\"\n },\n fa: {\n y: \"سال\",\n mo: \"ماه\",\n w: \"هفته\",\n d: \"روز\",\n h: \"ساعت\",\n m: \"دقیقه\",\n s: \"ثانیه\",\n ms: \"میلی ثانیه\",\n decimal: \".\"\n },\n fi: {\n y: function (c) {\n return c === 1 ? \"vuosi\" : \"vuotta\";\n },\n mo: function (c) {\n return c === 1 ? \"kuukausi\" : \"kuukautta\";\n },\n w: function (c) {\n return \"viikko\" + (c === 1 ? \"\" : \"a\");\n },\n d: function (c) {\n return \"päivä\" + (c === 1 ? \"\" : \"ä\");\n },\n h: function (c) {\n return \"tunti\" + (c === 1 ? \"\" : \"a\");\n },\n m: function (c) {\n return \"minuutti\" + (c === 1 ? \"\" : \"a\");\n },\n s: function (c) {\n return \"sekunti\" + (c === 1 ? \"\" : \"a\");\n },\n ms: function (c) {\n return \"millisekunti\" + (c === 1 ? \"\" : \"a\");\n },\n decimal: \",\"\n },\n fo: {\n y: \"ár\",\n mo: function (c) {\n return c === 1 ? \"mánaður\" : \"mánaðir\";\n },\n w: function (c) {\n return c === 1 ? \"vika\" : \"vikur\";\n },\n d: function (c) {\n return c === 1 ? \"dagur\" : \"dagar\";\n },\n h: function (c) {\n return c === 1 ? \"tími\" : \"tímar\";\n },\n m: function (c) {\n return c === 1 ? \"minuttur\" : \"minuttir\";\n },\n s: \"sekund\",\n ms: \"millisekund\",\n decimal: \",\"\n },\n fr: {\n y: function (c) {\n return \"an\" + (c >= 2 ? \"s\" : \"\");\n },\n mo: \"mois\",\n w: function (c) {\n return \"semaine\" + (c >= 2 ? \"s\" : \"\");\n },\n d: function (c) {\n return \"jour\" + (c >= 2 ? \"s\" : \"\");\n },\n h: function (c) {\n return \"heure\" + (c >= 2 ? \"s\" : \"\");\n },\n m: function (c) {\n return \"minute\" + (c >= 2 ? \"s\" : \"\");\n },\n s: function (c) {\n return \"seconde\" + (c >= 2 ? \"s\" : \"\");\n },\n ms: function (c) {\n return \"milliseconde\" + (c >= 2 ? \"s\" : \"\");\n },\n decimal: \",\"\n },\n gr: greek,\n he: {\n y: function (c) {\n return c === 1 ? \"שנה\" : \"שנים\";\n },\n mo: function (c) {\n return c === 1 ? \"חודש\" : \"חודשים\";\n },\n w: function (c) {\n return c === 1 ? \"שבוע\" : \"שבועות\";\n },\n d: function (c) {\n return c === 1 ? \"יום\" : \"ימים\";\n },\n h: function (c) {\n return c === 1 ? \"שעה\" : \"שעות\";\n },\n m: function (c) {\n return c === 1 ? \"דקה\" : \"דקות\";\n },\n s: function (c) {\n return c === 1 ? \"שניה\" : \"שניות\";\n },\n ms: function (c) {\n return c === 1 ? \"מילישנייה\" : \"מילישניות\";\n },\n decimal: \".\"\n },\n hr: {\n y: function (c) {\n if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n return \"godine\";\n }\n return \"godina\";\n },\n mo: function (c) {\n if (c === 1) {\n return \"mjesec\";\n } else if (c === 2 || c === 3 || c === 4) {\n return \"mjeseca\";\n }\n return \"mjeseci\";\n },\n w: function (c) {\n if (c % 10 === 1 && c !== 11) {\n return \"tjedan\";\n }\n return \"tjedna\";\n },\n d: function (c) {\n return c === 1 ? \"dan\" : \"dana\";\n },\n h: function (c) {\n if (c === 1) {\n return \"sat\";\n } else if (c === 2 || c === 3 || c === 4) {\n return \"sata\";\n }\n return \"sati\";\n },\n m: function (c) {\n var mod10 = c % 10;\n if ((mod10 === 2 || mod10 === 3 || mod10 === 4) && (c < 10 || c > 14)) {\n return \"minute\";\n }\n return \"minuta\";\n },\n s: function (c) {\n var mod10 = c % 10;\n if (mod10 === 5 || (Math.floor(c) === c && c >= 10 && c <= 19)) {\n return \"sekundi\";\n } else if (mod10 === 1) {\n return \"sekunda\";\n } else if (mod10 === 2 || mod10 === 3 || mod10 === 4) {\n return \"sekunde\";\n }\n return \"sekundi\";\n },\n ms: function (c) {\n if (c === 1) {\n return \"milisekunda\";\n } else if (c % 10 === 2 || c % 10 === 3 || c % 10 === 4) {\n return \"milisekunde\";\n }\n return \"milisekundi\";\n },\n decimal: \",\"\n },\n hi: {\n y: \"साल\",\n mo: function (c) {\n return c === 1 ? \"महीना\" : \"महीने\";\n },\n w: function (c) {\n return c === 1 ? \"हफ़्ता\" : \"हफ्ते\";\n },\n d: \"दिन\",\n h: function (c) {\n return c === 1 ? \"घंटा\" : \"घंटे\";\n },\n m: \"मिनट\",\n s: \"सेकंड\",\n ms: \"मिलीसेकंड\",\n decimal: \".\"\n },\n hu: {\n y: \"év\",\n mo: \"hónap\",\n w: \"hét\",\n d: \"nap\",\n h: \"óra\",\n m: \"perc\",\n s: \"másodperc\",\n ms: \"ezredmásodperc\",\n decimal: \",\"\n },\n id: {\n y: \"tahun\",\n mo: \"bulan\",\n w: \"minggu\",\n d: \"hari\",\n h: \"jam\",\n m: \"menit\",\n s: \"detik\",\n ms: \"milidetik\",\n decimal: \".\"\n },\n is: {\n y: \"ár\",\n mo: function (c) {\n return \"mánuð\" + (c === 1 ? \"ur\" : \"ir\");\n },\n w: function (c) {\n return \"vik\" + (c === 1 ? \"a\" : \"ur\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"ur\" : \"ar\");\n },\n h: function (c) {\n return \"klukkutím\" + (c === 1 ? \"i\" : \"ar\");\n },\n m: function (c) {\n return \"mínút\" + (c === 1 ? \"a\" : \"ur\");\n },\n s: function (c) {\n return \"sekúnd\" + (c === 1 ? \"a\" : \"ur\");\n },\n ms: function (c) {\n return \"millisekúnd\" + (c === 1 ? \"a\" : \"ur\");\n },\n decimal: \".\"\n },\n it: {\n y: function (c) {\n return \"ann\" + (c === 1 ? \"o\" : \"i\");\n },\n mo: function (c) {\n return \"mes\" + (c === 1 ? \"e\" : \"i\");\n },\n w: function (c) {\n return \"settiman\" + (c === 1 ? \"a\" : \"e\");\n },\n d: function (c) {\n return \"giorn\" + (c === 1 ? \"o\" : \"i\");\n },\n h: function (c) {\n return \"or\" + (c === 1 ? \"a\" : \"e\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"o\" : \"i\");\n },\n s: function (c) {\n return \"second\" + (c === 1 ? \"o\" : \"i\");\n },\n ms: function (c) {\n return \"millisecond\" + (c === 1 ? \"o\" : \"i\");\n },\n decimal: \",\"\n },\n ja: {\n y: \"年\",\n mo: \"ヶ月\",\n w: \"週\",\n d: \"日\",\n h: \"時間\",\n m: \"分\",\n s: \"秒\",\n ms: \"ミリ秒\",\n decimal: \".\"\n },\n km: {\n y: \"ឆ្នាំ\",\n mo: \"ខែ\",\n w: \"សប្តាហ៍\",\n d: \"ថ្ងៃ\",\n h: \"ម៉ោង\",\n m: \"នាទី\",\n s: \"វិនាទី\",\n ms: \"មិល្លីវិនាទី\"\n },\n kn: {\n y: function (c) {\n return c === 1 ? \"ವರ್ಷ\" : \"ವರ್ಷಗಳು\";\n },\n mo: function (c) {\n return c === 1 ? \"ತಿಂಗಳು\" : \"ತಿಂಗಳುಗಳು\";\n },\n w: function (c) {\n return c === 1 ? \"ವಾರ\" : \"ವಾರಗಳು\";\n },\n d: function (c) {\n return c === 1 ? \"ದಿನ\" : \"ದಿನಗಳು\";\n },\n h: function (c) {\n return c === 1 ? \"ಗಂಟೆ\" : \"ಗಂಟೆಗಳು\";\n },\n m: function (c) {\n return c === 1 ? \"ನಿಮಿಷ\" : \"ನಿಮಿಷಗಳು\";\n },\n s: function (c) {\n return c === 1 ? \"ಸೆಕೆಂಡ್\" : \"ಸೆಕೆಂಡುಗಳು\";\n },\n ms: function (c) {\n return c === 1 ? \"ಮಿಲಿಸೆಕೆಂಡ್\" : \"ಮಿಲಿಸೆಕೆಂಡುಗಳು\";\n }\n },\n ko: {\n y: \"년\",\n mo: \"개월\",\n w: \"주일\",\n d: \"일\",\n h: \"시간\",\n m: \"분\",\n s: \"초\",\n ms: \"밀리 초\",\n decimal: \".\"\n },\n ku: {\n y: \"sal\",\n mo: \"meh\",\n w: \"hefte\",\n d: \"roj\",\n h: \"seet\",\n m: \"deqe\",\n s: \"saniye\",\n ms: \"mîlîçirk\",\n decimal: \",\"\n },\n lo: {\n y: \"ປີ\",\n mo: \"ເດືອນ\",\n w: \"ອາທິດ\",\n d: \"ມື້\",\n h: \"ຊົ່ວໂມງ\",\n m: \"ນາທີ\",\n s: \"ວິນາທີ\",\n ms: \"ມິນລິວິນາທີ\",\n decimal: \",\"\n },\n lt: {\n y: function (c) {\n return c % 10 === 0 || (c % 100 >= 10 && c % 100 <= 20)\n ? \"metų\"\n : \"metai\";\n },\n mo: function (c) {\n return [\"mėnuo\", \"mėnesiai\", \"mėnesių\"][getLithuanianForm(c)];\n },\n w: function (c) {\n return [\"savaitė\", \"savaitės\", \"savaičių\"][getLithuanianForm(c)];\n },\n d: function (c) {\n return [\"diena\", \"dienos\", \"dienų\"][getLithuanianForm(c)];\n },\n h: function (c) {\n return [\"valanda\", \"valandos\", \"valandų\"][getLithuanianForm(c)];\n },\n m: function (c) {\n return [\"minutė\", \"minutės\", \"minučių\"][getLithuanianForm(c)];\n },\n s: function (c) {\n return [\"sekundė\", \"sekundės\", \"sekundžių\"][getLithuanianForm(c)];\n },\n ms: function (c) {\n return [\"milisekundė\", \"milisekundės\", \"milisekundžių\"][\n getLithuanianForm(c)\n ];\n },\n decimal: \",\"\n },\n lv: {\n y: function (c) {\n return getLatvianForm(c) ? \"gads\" : \"gadi\";\n },\n mo: function (c) {\n return getLatvianForm(c) ? \"mēnesis\" : \"mēneši\";\n },\n w: function (c) {\n return getLatvianForm(c) ? \"nedēļa\" : \"nedēļas\";\n },\n d: function (c) {\n return getLatvianForm(c) ? \"diena\" : \"dienas\";\n },\n h: function (c) {\n return getLatvianForm(c) ? \"stunda\" : \"stundas\";\n },\n m: function (c) {\n return getLatvianForm(c) ? \"minūte\" : \"minūtes\";\n },\n s: function (c) {\n return getLatvianForm(c) ? \"sekunde\" : \"sekundes\";\n },\n ms: function (c) {\n return getLatvianForm(c) ? \"milisekunde\" : \"milisekundes\";\n },\n decimal: \",\"\n },\n mk: {\n y: function (c) {\n return c === 1 ? \"година\" : \"години\";\n },\n mo: function (c) {\n return c === 1 ? \"месец\" : \"месеци\";\n },\n w: function (c) {\n return c === 1 ? \"недела\" : \"недели\";\n },\n d: function (c) {\n return c === 1 ? \"ден\" : \"дена\";\n },\n h: function (c) {\n return c === 1 ? \"час\" : \"часа\";\n },\n m: function (c) {\n return c === 1 ? \"минута\" : \"минути\";\n },\n s: function (c) {\n return c === 1 ? \"секунда\" : \"секунди\";\n },\n ms: function (c) {\n return c === 1 ? \"милисекунда\" : \"милисекунди\";\n },\n decimal: \",\"\n },\n mr: {\n y: function (c) {\n return c === 1 ? \"वर्ष\" : \"वर्षे\";\n },\n mo: function (c) {\n return c === 1 ? \"महिना\" : \"महिने\";\n },\n w: function (c) {\n return c === 1 ? \"आठवडा\" : \"आठवडे\";\n },\n d: \"दिवस\",\n h: \"तास\",\n m: function (c) {\n return c === 1 ? \"मिनिट\" : \"मिनिटे\";\n },\n s: \"सेकंद\",\n ms: \"मिलिसेकंद\"\n },\n ms: {\n y: \"tahun\",\n mo: \"bulan\",\n w: \"minggu\",\n d: \"hari\",\n h: \"jam\",\n m: \"minit\",\n s: \"saat\",\n ms: \"milisaat\",\n decimal: \".\"\n },\n nl: {\n y: \"jaar\",\n mo: function (c) {\n return c === 1 ? \"maand\" : \"maanden\";\n },\n w: function (c) {\n return c === 1 ? \"week\" : \"weken\";\n },\n d: function (c) {\n return c === 1 ? \"dag\" : \"dagen\";\n },\n h: \"uur\",\n m: function (c) {\n return c === 1 ? \"minuut\" : \"minuten\";\n },\n s: function (c) {\n return c === 1 ? \"seconde\" : \"seconden\";\n },\n ms: function (c) {\n return c === 1 ? \"milliseconde\" : \"milliseconden\";\n },\n decimal: \",\"\n },\n no: {\n y: \"år\",\n mo: function (c) {\n return \"måned\" + (c === 1 ? \"\" : \"er\");\n },\n w: function (c) {\n return \"uke\" + (c === 1 ? \"\" : \"r\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"er\");\n },\n h: function (c) {\n return \"time\" + (c === 1 ? \"\" : \"r\");\n },\n m: function (c) {\n return \"minutt\" + (c === 1 ? \"\" : \"er\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n decimal: \",\"\n },\n pl: {\n y: function (c) {\n return [\"rok\", \"roku\", \"lata\", \"lat\"][getPolishForm(c)];\n },\n mo: function (c) {\n return [\"miesiąc\", \"miesiąca\", \"miesiące\", \"miesięcy\"][\n getPolishForm(c)\n ];\n },\n w: function (c) {\n return [\"tydzień\", \"tygodnia\", \"tygodnie\", \"tygodni\"][getPolishForm(c)];\n },\n d: function (c) {\n return [\"dzień\", \"dnia\", \"dni\", \"dni\"][getPolishForm(c)];\n },\n h: function (c) {\n return [\"godzina\", \"godziny\", \"godziny\", \"godzin\"][getPolishForm(c)];\n },\n m: function (c) {\n return [\"minuta\", \"minuty\", \"minuty\", \"minut\"][getPolishForm(c)];\n },\n s: function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekund\"][getPolishForm(c)];\n },\n ms: function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekund\"][\n getPolishForm(c)\n ];\n },\n decimal: \",\"\n },\n pt: {\n y: function (c) {\n return \"ano\" + (c === 1 ? \"\" : \"s\");\n },\n mo: function (c) {\n return c === 1 ? \"mês\" : \"meses\";\n },\n w: function (c) {\n return \"semana\" + (c === 1 ? \"\" : \"s\");\n },\n d: function (c) {\n return \"dia\" + (c === 1 ? \"\" : \"s\");\n },\n h: function (c) {\n return \"hora\" + (c === 1 ? \"\" : \"s\");\n },\n m: function (c) {\n return \"minuto\" + (c === 1 ? \"\" : \"s\");\n },\n s: function (c) {\n return \"segundo\" + (c === 1 ? \"\" : \"s\");\n },\n ms: function (c) {\n return \"milissegundo\" + (c === 1 ? \"\" : \"s\");\n },\n decimal: \",\"\n },\n ro: {\n y: function (c) {\n return c === 1 ? \"an\" : \"ani\";\n },\n mo: function (c) {\n return c === 1 ? \"lună\" : \"luni\";\n },\n w: function (c) {\n return c === 1 ? \"săptămână\" : \"săptămâni\";\n },\n d: function (c) {\n return c === 1 ? \"zi\" : \"zile\";\n },\n h: function (c) {\n return c === 1 ? \"oră\" : \"ore\";\n },\n m: function (c) {\n return c === 1 ? \"minut\" : \"minute\";\n },\n s: function (c) {\n return c === 1 ? \"secundă\" : \"secunde\";\n },\n ms: function (c) {\n return c === 1 ? \"milisecundă\" : \"milisecunde\";\n },\n decimal: \",\"\n },\n ru: {\n y: function (c) {\n return [\"лет\", \"год\", \"года\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"месяцев\", \"месяц\", \"месяца\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"недель\", \"неделя\", \"недели\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"дней\", \"день\", \"дня\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"часов\", \"час\", \"часа\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"минут\", \"минута\", \"минуты\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунд\", \"секунда\", \"секунды\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"миллисекунд\", \"миллисекунда\", \"миллисекунды\"][\n getSlavicForm(c)\n ];\n },\n decimal: \",\"\n },\n sq: {\n y: function (c) {\n return c === 1 ? \"vit\" : \"vjet\";\n },\n mo: \"muaj\",\n w: \"javë\",\n d: \"ditë\",\n h: \"orë\",\n m: function (c) {\n return \"minut\" + (c === 1 ? \"ë\" : \"a\");\n },\n s: function (c) {\n return \"sekond\" + (c === 1 ? \"ë\" : \"a\");\n },\n ms: function (c) {\n return \"milisekond\" + (c === 1 ? \"ë\" : \"a\");\n },\n decimal: \",\"\n },\n sr: {\n y: function (c) {\n return [\"години\", \"година\", \"године\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"месеци\", \"месец\", \"месеца\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"недељи\", \"недеља\", \"недеље\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"дани\", \"дан\", \"дана\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"сати\", \"сат\", \"сата\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"минута\", \"минут\", \"минута\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунди\", \"секунда\", \"секунде\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"милисекунди\", \"милисекунда\", \"милисекунде\"][getSlavicForm(c)];\n },\n decimal: \",\"\n },\n ta: {\n y: function (c) {\n return c === 1 ? \"வருடம்\" : \"ஆண்டுகள்\";\n },\n mo: function (c) {\n return c === 1 ? \"மாதம்\" : \"மாதங்கள்\";\n },\n w: function (c) {\n return c === 1 ? \"வாரம்\" : \"வாரங்கள்\";\n },\n d: function (c) {\n return c === 1 ? \"நாள்\" : \"நாட்கள்\";\n },\n h: function (c) {\n return c === 1 ? \"மணி\" : \"மணிநேரம்\";\n },\n m: function (c) {\n return \"நிமிட\" + (c === 1 ? \"ம்\" : \"ங்கள்\");\n },\n s: function (c) {\n return \"வினாடி\" + (c === 1 ? \"\" : \"கள்\");\n },\n ms: function (c) {\n return \"மில்லி விநாடி\" + (c === 1 ? \"\" : \"கள்\");\n }\n },\n te: {\n y: function (c) {\n return \"సంవత్స\" + (c === 1 ? \"రం\" : \"రాల\");\n },\n mo: function (c) {\n return \"నెల\" + (c === 1 ? \"\" : \"ల\");\n },\n w: function (c) {\n return c === 1 ? \"వారం\" : \"వారాలు\";\n },\n d: function (c) {\n return \"రోజు\" + (c === 1 ? \"\" : \"లు\");\n },\n h: function (c) {\n return \"గంట\" + (c === 1 ? \"\" : \"లు\");\n },\n m: function (c) {\n return c === 1 ? \"నిమిషం\" : \"నిమిషాలు\";\n },\n s: function (c) {\n return c === 1 ? \"సెకను\" : \"సెకన్లు\";\n },\n ms: function (c) {\n return c === 1 ? \"మిల్లీసెకన్\" : \"మిల్లీసెకన్లు\";\n }\n },\n uk: {\n y: function (c) {\n return [\"років\", \"рік\", \"роки\"][getSlavicForm(c)];\n },\n mo: function (c) {\n return [\"місяців\", \"місяць\", \"місяці\"][getSlavicForm(c)];\n },\n w: function (c) {\n return [\"тижнів\", \"тиждень\", \"тижні\"][getSlavicForm(c)];\n },\n d: function (c) {\n return [\"днів\", \"день\", \"дні\"][getSlavicForm(c)];\n },\n h: function (c) {\n return [\"годин\", \"година\", \"години\"][getSlavicForm(c)];\n },\n m: function (c) {\n return [\"хвилин\", \"хвилина\", \"хвилини\"][getSlavicForm(c)];\n },\n s: function (c) {\n return [\"секунд\", \"секунда\", \"секунди\"][getSlavicForm(c)];\n },\n ms: function (c) {\n return [\"мілісекунд\", \"мілісекунда\", \"мілісекунди\"][getSlavicForm(c)];\n },\n decimal: \",\"\n },\n ur: {\n y: \"سال\",\n mo: function (c) {\n return c === 1 ? \"مہینہ\" : \"مہینے\";\n },\n w: function (c) {\n return c === 1 ? \"ہفتہ\" : \"ہفتے\";\n },\n d: \"دن\",\n h: function (c) {\n return c === 1 ? \"گھنٹہ\" : \"گھنٹے\";\n },\n m: \"منٹ\",\n s: \"سیکنڈ\",\n ms: \"ملی سیکنڈ\",\n decimal: \".\"\n },\n sk: {\n y: function (c) {\n return [\"rok\", \"roky\", \"roky\", \"rokov\"][getCzechOrSlovakForm(c)];\n },\n mo: function (c) {\n return [\"mesiac\", \"mesiace\", \"mesiace\", \"mesiacov\"][\n getCzechOrSlovakForm(c)\n ];\n },\n w: function (c) {\n return [\"týždeň\", \"týždne\", \"týždne\", \"týždňov\"][\n getCzechOrSlovakForm(c)\n ];\n },\n d: function (c) {\n return [\"deň\", \"dni\", \"dni\", \"dní\"][getCzechOrSlovakForm(c)];\n },\n h: function (c) {\n return [\"hodina\", \"hodiny\", \"hodiny\", \"hodín\"][getCzechOrSlovakForm(c)];\n },\n m: function (c) {\n return [\"minúta\", \"minúty\", \"minúty\", \"minút\"][getCzechOrSlovakForm(c)];\n },\n s: function (c) {\n return [\"sekunda\", \"sekundy\", \"sekundy\", \"sekúnd\"][\n getCzechOrSlovakForm(c)\n ];\n },\n ms: function (c) {\n return [\"milisekunda\", \"milisekundy\", \"milisekundy\", \"milisekúnd\"][\n getCzechOrSlovakForm(c)\n ];\n },\n decimal: \",\"\n },\n sl: {\n y: function (c) {\n if (c % 10 === 1) {\n return \"leto\";\n } else if (c % 100 === 2) {\n return \"leti\";\n } else if (\n c % 100 === 3 ||\n c % 100 === 4 ||\n (Math.floor(c) !== c && c % 100 <= 5)\n ) {\n return \"leta\";\n } else {\n return \"let\";\n }\n },\n mo: function (c) {\n if (c % 10 === 1) {\n return \"mesec\";\n } else if (c % 100 === 2 || (Math.floor(c) !== c && c % 100 <= 5)) {\n return \"meseca\";\n } else if (c % 10 === 3 || c % 10 === 4) {\n return \"mesece\";\n } else {\n return \"mesecev\";\n }\n },\n w: function (c) {\n if (c % 10 === 1) {\n return \"teden\";\n } else if (c % 10 === 2 || (Math.floor(c) !== c && c % 100 <= 4)) {\n return \"tedna\";\n } else if (c % 10 === 3 || c % 10 === 4) {\n return \"tedne\";\n } else {\n return \"tednov\";\n }\n },\n d: function (c) {\n return c % 100 === 1 ? \"dan\" : \"dni\";\n },\n h: function (c) {\n if (c % 10 === 1) {\n return \"ura\";\n } else if (c % 100 === 2) {\n return \"uri\";\n } else if (c % 10 === 3 || c % 10 === 4 || Math.floor(c) !== c) {\n return \"ure\";\n } else {\n return \"ur\";\n }\n },\n m: function (c) {\n if (c % 10 === 1) {\n return \"minuta\";\n } else if (c % 10 === 2) {\n return \"minuti\";\n } else if (\n c % 10 === 3 ||\n c % 10 === 4 ||\n (Math.floor(c) !== c && c % 100 <= 4)\n ) {\n return \"minute\";\n } else {\n return \"minut\";\n }\n },\n s: function (c) {\n if (c % 10 === 1) {\n return \"sekunda\";\n } else if (c % 100 === 2) {\n return \"sekundi\";\n } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n return \"sekunde\";\n } else {\n return \"sekund\";\n }\n },\n ms: function (c) {\n if (c % 10 === 1) {\n return \"milisekunda\";\n } else if (c % 100 === 2) {\n return \"milisekundi\";\n } else if (c % 100 === 3 || c % 100 === 4 || Math.floor(c) !== c) {\n return \"milisekunde\";\n } else {\n return \"milisekund\";\n }\n },\n decimal: \",\"\n },\n sv: {\n y: \"år\",\n mo: function (c) {\n return \"månad\" + (c === 1 ? \"\" : \"er\");\n },\n w: function (c) {\n return \"veck\" + (c === 1 ? \"a\" : \"or\");\n },\n d: function (c) {\n return \"dag\" + (c === 1 ? \"\" : \"ar\");\n },\n h: function (c) {\n return \"timm\" + (c === 1 ? \"e\" : \"ar\");\n },\n m: function (c) {\n return \"minut\" + (c === 1 ? \"\" : \"er\");\n },\n s: function (c) {\n return \"sekund\" + (c === 1 ? \"\" : \"er\");\n },\n ms: function (c) {\n return \"millisekund\" + (c === 1 ? \"\" : \"er\");\n },\n decimal: \",\"\n },\n sw: {\n y: function (c) {\n return c === 1 ? \"mwaka\" : \"miaka\";\n },\n mo: function (c) {\n return c === 1 ? \"mwezi\" : \"miezi\";\n },\n w: \"wiki\",\n d: function (c) {\n return c === 1 ? \"siku\" : \"masiku\";\n },\n h: function (c) {\n return c === 1 ? \"saa\" : \"masaa\";\n },\n m: \"dakika\",\n s: \"sekunde\",\n ms: \"milisekunde\",\n decimal: \".\",\n _numberFirst: true\n },\n tr: {\n y: \"yıl\",\n mo: \"ay\",\n w: \"hafta\",\n d: \"gün\",\n h: \"saat\",\n m: \"dakika\",\n s: \"saniye\",\n ms: \"milisaniye\",\n decimal: \",\"\n },\n th: {\n y: \"ปี\",\n mo: \"เดือน\",\n w: \"สัปดาห์\",\n d: \"วัน\",\n h: \"ชั่วโมง\",\n m: \"นาที\",\n s: \"วินาที\",\n ms: \"มิลลิวินาที\",\n decimal: \".\"\n },\n vi: {\n y: \"năm\",\n mo: \"tháng\",\n w: \"tuần\",\n d: \"ngày\",\n h: \"giờ\",\n m: \"phút\",\n s: \"giây\",\n ms: \"mili giây\",\n decimal: \",\"\n },\n zh_CN: {\n y: \"年\",\n mo: \"个月\",\n w: \"周\",\n d: \"天\",\n h: \"小时\",\n m: \"分钟\",\n s: \"秒\",\n ms: \"毫秒\",\n decimal: \".\"\n },\n zh_TW: {\n y: \"年\",\n mo: \"個月\",\n w: \"周\",\n d: \"天\",\n h: \"小時\",\n m: \"分鐘\",\n s: \"秒\",\n ms: \"毫秒\",\n decimal: \".\"\n }\n };\n\n // You can create a humanizer, which returns a function with default\n // parameters.\n function humanizer(passedOptions) {\n var result = function humanizer(ms, humanizerOptions) {\n var options = assign({}, result, humanizerOptions || {});\n return doHumanization(ms, options);\n };\n\n return assign(\n result,\n {\n language: \"en\",\n spacer: \" \",\n conjunction: \"\",\n serialComma: true,\n units: [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\"],\n languages: {},\n round: false,\n unitMeasures: {\n y: 31557600000,\n mo: 2629800000,\n w: 604800000,\n d: 86400000,\n h: 3600000,\n m: 60000,\n s: 1000,\n ms: 1\n }\n },\n passedOptions\n );\n }\n\n // The main function is just a wrapper around a default humanizer.\n var humanizeDuration = humanizer({});\n\n // Build dictionary from options\n function getDictionary(options) {\n var languagesFromOptions = [options.language];\n\n if (has(options, \"fallbacks\")) {\n if (isArray(options.fallbacks) && options.fallbacks.length) {\n languagesFromOptions = languagesFromOptions.concat(options.fallbacks);\n } else {\n throw new Error(\"fallbacks must be an array with at least one element\");\n }\n }\n\n for (var i = 0; i < languagesFromOptions.length; i++) {\n var languageToTry = languagesFromOptions[i];\n if (has(options.languages, languageToTry)) {\n return options.languages[languageToTry];\n } else if (has(LANGUAGES, languageToTry)) {\n return LANGUAGES[languageToTry];\n }\n }\n\n throw new Error(\"No language found.\");\n }\n\n // doHumanization does the bulk of the work.\n function doHumanization(ms, options) {\n var i, len, piece;\n\n // Make sure we have a positive number.\n // Has the nice sideffect of turning Number objects into primitives.\n ms = Math.abs(ms);\n\n var dictionary = getDictionary(options);\n var pieces = [];\n\n // Start at the top and keep removing units, bit by bit.\n var unitName, unitMS, unitCount;\n for (i = 0, len = options.units.length; i < len; i++) {\n unitName = options.units[i];\n unitMS = options.unitMeasures[unitName];\n\n // What's the number of full units we can fit?\n if (i + 1 === len) {\n if (has(options, \"maxDecimalPoints\")) {\n // We need to use this expValue to avoid rounding functionality of toFixed call\n var expValue = Math.pow(10, options.maxDecimalPoints);\n var unitCountFloat = ms / unitMS;\n unitCount = parseFloat(\n (Math.floor(expValue * unitCountFloat) / expValue).toFixed(\n options.maxDecimalPoints\n )\n );\n } else {\n unitCount = ms / unitMS;\n }\n } else {\n unitCount = Math.floor(ms / unitMS);\n }\n\n // Add the string.\n pieces.push({\n unitCount: unitCount,\n unitName: unitName\n });\n\n // Remove what we just figured out.\n ms -= unitCount * unitMS;\n }\n\n var firstOccupiedUnitIndex = 0;\n for (i = 0; i < pieces.length; i++) {\n if (pieces[i].unitCount) {\n firstOccupiedUnitIndex = i;\n break;\n }\n }\n\n if (options.round) {\n var ratioToLargerUnit, previousPiece;\n for (i = pieces.length - 1; i >= 0; i--) {\n piece = pieces[i];\n piece.unitCount = Math.round(piece.unitCount);\n\n if (i === 0) {\n break;\n }\n\n previousPiece = pieces[i - 1];\n\n ratioToLargerUnit =\n options.unitMeasures[previousPiece.unitName] /\n options.unitMeasures[piece.unitName];\n if (\n piece.unitCount % ratioToLargerUnit === 0 ||\n (options.largest && options.largest - 1 < i - firstOccupiedUnitIndex)\n ) {\n previousPiece.unitCount += piece.unitCount / ratioToLargerUnit;\n piece.unitCount = 0;\n }\n }\n }\n\n var result = [];\n for (i = 0, pieces.length; i < len; i++) {\n piece = pieces[i];\n if (piece.unitCount) {\n result.push(\n render(piece.unitCount, piece.unitName, dictionary, options)\n );\n }\n\n if (result.length === options.largest) {\n break;\n }\n }\n\n if (result.length) {\n var delimiter;\n if (has(options, \"delimiter\")) {\n delimiter = options.delimiter;\n } else if (has(dictionary, \"delimiter\")) {\n delimiter = dictionary.delimiter;\n } else {\n delimiter = \", \";\n }\n\n if (!options.conjunction || result.length === 1) {\n return result.join(delimiter);\n } else if (result.length === 2) {\n return result.join(options.conjunction);\n } else if (result.length > 2) {\n return (\n result.slice(0, -1).join(delimiter) +\n (options.serialComma ? \",\" : \"\") +\n options.conjunction +\n result.slice(-1)\n );\n }\n } else {\n return render(\n 0,\n options.units[options.units.length - 1],\n dictionary,\n options\n );\n }\n }\n\n function render(count, type, dictionary, options) {\n var decimal;\n if (has(options, \"decimal\")) {\n decimal = options.decimal;\n } else if (has(dictionary, \"decimal\")) {\n decimal = dictionary.decimal;\n } else {\n decimal = \".\";\n }\n\n var countStr;\n if (typeof dictionary._formatCount === \"function\") {\n countStr = dictionary._formatCount(count, decimal);\n } else {\n countStr = count.toString().replace(\".\", decimal);\n }\n\n var dictionaryValue = dictionary[type];\n var word;\n if (typeof dictionaryValue === \"function\") {\n word = dictionaryValue(count);\n } else {\n word = dictionaryValue;\n }\n\n if (dictionary._numberFirst) {\n return word + options.spacer + countStr;\n }\n return countStr + options.spacer + word;\n }\n\n function assign(destination) {\n var source;\n for (var i = 1; i < arguments.length; i++) {\n source = arguments[i];\n for (var prop in source) {\n if (has(source, prop)) {\n destination[prop] = source[prop];\n }\n }\n }\n return destination;\n }\n\n function getArabicForm(c) {\n if (c === 1) {\n return 0;\n }\n if (c === 2) {\n return 1;\n }\n if (c > 2 && c < 11) {\n return 2;\n }\n return 0;\n }\n\n function getPolishForm(c) {\n if (c === 1) {\n return 0;\n } else if (Math.floor(c) !== c) {\n return 1;\n } else if (c % 10 >= 2 && c % 10 <= 4 && !(c % 100 > 10 && c % 100 < 20)) {\n return 2;\n } else {\n return 3;\n }\n }\n\n function getSlavicForm(c) {\n if (Math.floor(c) !== c) {\n return 2;\n } else if (\n (c % 100 >= 5 && c % 100 <= 20) ||\n (c % 10 >= 5 && c % 10 <= 9) ||\n c % 10 === 0\n ) {\n return 0;\n } else if (c % 10 === 1) {\n return 1;\n } else if (c > 1) {\n return 2;\n } else {\n return 0;\n }\n }\n\n function getCzechOrSlovakForm(c) {\n if (c === 1) {\n return 0;\n } else if (Math.floor(c) !== c) {\n return 1;\n } else if (c % 10 >= 2 && c % 10 <= 4 && c % 100 < 10) {\n return 2;\n } else {\n return 3;\n }\n }\n\n function getLithuanianForm(c) {\n if (c === 1 || (c % 10 === 1 && c % 100 > 20)) {\n return 0;\n } else if (\n Math.floor(c) !== c ||\n (c % 10 >= 2 && c % 100 > 20) ||\n (c % 10 >= 2 && c % 100 < 10)\n ) {\n return 1;\n } else {\n return 2;\n }\n }\n\n function getLatvianForm(c) {\n return c % 10 === 1 && c % 100 !== 11;\n }\n\n // We need to make sure we support browsers that don't have\n // `Array.isArray`, so we define a fallback here.\n var isArray =\n Array.isArray ||\n function (arg) {\n return Object.prototype.toString.call(arg) === \"[object Array]\";\n };\n\n function has(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n }\n\n humanizeDuration.getSupportedLanguages = function getSupportedLanguages() {\n var result = [];\n for (var language in LANGUAGES) {\n if (has(LANGUAGES, language) && language !== \"gr\") {\n result.push(language);\n }\n }\n return result;\n };\n\n humanizeDuration.humanizer = humanizer;\n\n if (typeof define === \"function\" && define.amd) {\n define(function () {\n return humanizeDuration;\n });\n } else if (typeof module !== \"undefined\" && module.exports) {\n module.exports = humanizeDuration;\n } else {\n this.humanizeDuration = humanizeDuration;\n }\n})();\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","module.exports.degree = require('./src/degree.js');\nmodule.exports.betweenness = require('./src/betweenness.js');\nmodule.exports.closeness = require('./src/closeness.js');\nmodule.exports.eccentricity = require('./src/eccentricity.js');\n","module.exports = betweennes;\n\n/**\n * I'm using http://www.inf.uni-konstanz.de/algo/publications/b-vspbc-08.pdf\n * as a reference for this implementation\n */\nfunction betweennes(graph, oriented) {\n var Q = [],\n S = []; // Queue and Stack\n // list of predcessors on shorteest paths from source\n var pred = Object.create(null);\n // distance from source\n var dist = Object.create(null);\n // number of shortest paths from source to key\n var sigma = Object.create(null);\n // dependency of source on key\n var delta = Object.create(null);\n\n var currentNode;\n var centrality = Object.create(null);\n\n graph.forEachNode(setCentralityToZero);\n graph.forEachNode(calculateCentrality);\n\n if (!oriented) {\n // The centrality scores need to be divided by two if the graph is not oriented,\n // since all shortest paths are considered twice\n Object.keys(centrality).forEach(divideByTwo);\n }\n\n return centrality;\n\n function divideByTwo(key) {\n centrality[key] /= 2;\n }\n\n function setCentralityToZero(node) {\n centrality[node.id] = 0;\n }\n\n function calculateCentrality(node) {\n currentNode = node.id;\n singleSourceShortestPath(currentNode);\n accumulate();\n }\n\n function accumulate() {\n graph.forEachNode(setDeltaToZero);\n while (S.length) {\n var w = S.pop();\n var coeff = (1 + delta[w])/sigma[w];\n var predcessors = pred[w];\n for (var idx = 0; idx < predcessors.length; ++idx) {\n var v = predcessors[idx];\n delta[v] += sigma[v] * coeff;\n }\n if (w !== currentNode) {\n centrality[w] += delta[w];\n }\n }\n }\n\n function setDeltaToZero(node) {\n delta[node.id] = 0;\n }\n\n function singleSourceShortestPath(source) {\n graph.forEachNode(initNode);\n dist[source] = 0;\n sigma[source] = 1;\n Q.push(source);\n\n while (Q.length) {\n var v = Q.shift();\n S.push(v);\n graph.forEachLinkedNode(v, toId, oriented);\n }\n\n function toId(otherNode) {\n // NOTE: This code will also consider multi-edges, which are often\n // ignored by popular software (Gephi/NetworkX). Depending on your use\n // case this may not be desired and deduping needs to be performed. To\n // save memory I'm not deduping here...\n processNode(otherNode.id);\n }\n\n function initNode(node) {\n var nodeId = node.id;\n pred[nodeId] = []; // empty list\n dist[nodeId] = -1;\n sigma[nodeId] = 0;\n }\n\n function processNode(w) {\n // path discovery\n if (dist[w] === -1) {\n // Node w is found for the first time\n dist[w] = dist[v] + 1;\n Q.push(w);\n }\n // path counting\n if (dist[w] === dist[v] + 1) {\n // edge (v, w) on a shortest path\n sigma[w] += sigma[v];\n pred[w].push(v);\n }\n }\n }\n}\n","module.exports = closeness;\r\n\r\n/**\r\n * In a connected graph, the normalized closeness centrality of a node is the average\r\n * length of the shortest path between the node and all other nodes in the\r\n * graph. Thus the more central a node is, the closer it is to all other nodes.\r\n */\r\nfunction closeness(graph, oriented) {\r\n var Q = [];\r\n // list of predcessors on shortest paths from source\r\n // distance from source\r\n var dist = Object.create(null);\r\n\r\n var currentNode;\r\n var centrality = Object.create(null);\r\n\r\n graph.forEachNode(setCentralityToZero);\r\n graph.forEachNode(calculateCentrality);\r\n\r\n return centrality;\r\n\r\n function setCentralityToZero(node) {\r\n centrality[node.id] = 0;\r\n }\r\n\r\n function calculateCentrality(node) {\r\n currentNode = node.id;\r\n singleSourceShortestPath(currentNode);\r\n accumulate();\r\n }\r\n\r\n function accumulate() {\r\n // Add all distances for node to array, excluding -1s\r\n var distances = Object.keys(dist).map(function(key) {return dist[key]}).filter(function(val){return val !== -1});\r\n // Set number of reachable nodes\r\n var reachableNodesTotal = distances.length;\r\n // Compute sum of all distances for node\r\n var totalDistance = distances.reduce(function(a,b) { return a + b });\r\n if (totalDistance > 0) {\r\n centrality[currentNode] = ((reachableNodesTotal - 1) / totalDistance); \r\n } else {\r\n centrality[currentNode] = 0;\r\n }\r\n }\r\n\r\n function singleSourceShortestPath(source) {\r\n graph.forEachNode(initNode);\r\n dist[source] = 0;\r\n Q.push(source);\r\n\r\n while (Q.length) {\r\n var v = Q.shift();\r\n graph.forEachLinkedNode(v, processNode, oriented);\r\n }\r\n\r\n function initNode(node) {\r\n var nodeId = node.id;\r\n dist[nodeId] = -1;\r\n }\r\n\r\n function processNode(otherNode) {\r\n var w = otherNode.id\r\n if (dist[w] === -1) {\r\n // Node w is found for the first time\r\n dist[w] = dist[v] + 1;\r\n Q.push(w);\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = degree;\n\n/**\n * Calculates graph nodes degree centrality (in/out or both).\n *\n * @see http://en.wikipedia.org/wiki/Centrality#Degree_centrality\n *\n * @param {ngraph.graph} graph object for which we are calculating centrality.\n * @param {string} [kind=both] What kind of degree centrality needs to be calculated:\n * 'in' - calculate in-degree centrality\n * 'out' - calculate out-degree centrality\n * 'inout' - (default) generic degree centrality is calculated\n */\nfunction degree(graph, kind) {\n var getNodeDegree;\n var result = Object.create(null);\n\n kind = (kind || 'both').toLowerCase();\n if (kind === 'both' || kind === 'inout') {\n getNodeDegree = inoutDegreeCalculator;\n } else if (kind === 'in') {\n getNodeDegree = inDegreeCalculator;\n } else if (kind === 'out') {\n getNodeDegree = outDegreeCalculator;\n } else {\n throw new Error('Expected centrality degree kind is: in, out or both');\n }\n\n graph.forEachNode(calculateNodeDegree);\n\n return result;\n\n function calculateNodeDegree(node) {\n var links = graph.getLinks(node.id);\n result[node.id] = getNodeDegree(links, node.id);\n }\n}\n\nfunction inDegreeCalculator(links, nodeId) {\n var total = 0;\n if (!links) return total;\n\n for (var i = 0; i < links.length; i += 1) {\n total += (links[i].toId === nodeId) ? 1 : 0;\n }\n return total;\n}\n\nfunction outDegreeCalculator(links, nodeId) {\n var total = 0;\n if (!links) return total;\n\n for (var i = 0; i < links.length; i += 1) {\n total += (links[i].fromId === nodeId) ? 1 : 0;\n }\n return total;\n}\n\nfunction inoutDegreeCalculator(links) {\n if (!links) return 0;\n\n return links.length;\n}\n","module.exports = eccentricity;\r\n\r\n/**\r\n * The eccentricity centrality of a node is the greatest distance between that node and\r\n * any other node in the network. \r\n */\r\nfunction eccentricity(graph, oriented) {\r\n var Q = [];\r\n // distance from source\r\n var dist = Object.create(null);\r\n\r\n var currentNode;\r\n var centrality = Object.create(null);\r\n\r\n graph.forEachNode(setCentralityToZero);\r\n graph.forEachNode(calculateCentrality);\r\n\r\n return centrality;\r\n\r\n function setCentralityToZero(node) {\r\n centrality[node.id] = 0;\r\n }\r\n\r\n function calculateCentrality(node) {\r\n currentNode = node.id;\r\n singleSourceShortestPath(currentNode);\r\n accumulate();\r\n }\r\n\r\n function accumulate() {\r\n var maxDist = 0;\r\n Object.keys(dist).forEach(function (key) {\r\n var val = dist[key];\r\n if (maxDist < val) maxDist = val;\r\n });\r\n\r\n centrality[currentNode] = maxDist;\r\n }\r\n\r\n function singleSourceShortestPath(source) {\r\n graph.forEachNode(initNode);\r\n dist[source] = 0;\r\n Q.push(source);\r\n\r\n while (Q.length) {\r\n var v = Q.shift();\r\n graph.forEachLinkedNode(v, processNode, oriented);\r\n }\r\n\r\n function initNode(node) {\r\n var nodeId = node.id;\r\n dist[nodeId] = -1;\r\n }\r\n\r\n function processNode(otherNode) {\r\n var w = otherNode.id\r\n if (dist[w] === -1) {\r\n // Node w is found for the first time\r\n dist[w] = dist[v] + 1;\r\n Q.push(w);\r\n }\r\n }\r\n }\r\n}\r\n","module.exports = function(subject) {\n validateSubject(subject);\n\n var eventsStorage = createEventsStorage(subject);\n subject.on = eventsStorage.on;\n subject.off = eventsStorage.off;\n subject.fire = eventsStorage.fire;\n return subject;\n};\n\nfunction createEventsStorage(subject) {\n // Store all event listeners to this hash. Key is event name, value is array\n // of callback records.\n //\n // A callback record consists of callback function and its optional context:\n // { 'eventName' => [{callback: function, ctx: object}] }\n var registeredEvents = Object.create(null);\n\n return {\n on: function (eventName, callback, ctx) {\n if (typeof callback !== 'function') {\n throw new Error('callback is expected to be a function');\n }\n var handlers = registeredEvents[eventName];\n if (!handlers) {\n handlers = registeredEvents[eventName] = [];\n }\n handlers.push({callback: callback, ctx: ctx});\n\n return subject;\n },\n\n off: function (eventName, callback) {\n var wantToRemoveAll = (typeof eventName === 'undefined');\n if (wantToRemoveAll) {\n // Killing old events storage should be enough in this case:\n registeredEvents = Object.create(null);\n return subject;\n }\n\n if (registeredEvents[eventName]) {\n var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n if (deleteAllCallbacksForEvent) {\n delete registeredEvents[eventName];\n } else {\n var callbacks = registeredEvents[eventName];\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].callback === callback) {\n callbacks.splice(i, 1);\n }\n }\n }\n }\n\n return subject;\n },\n\n fire: function (eventName) {\n var callbacks = registeredEvents[eventName];\n if (!callbacks) {\n return subject;\n }\n\n var fireArguments;\n if (arguments.length > 1) {\n fireArguments = Array.prototype.splice.call(arguments, 1);\n }\n for(var i = 0; i < callbacks.length; ++i) {\n var callbackInfo = callbacks[i];\n callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n }\n\n return subject;\n }\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('Eventify cannot use falsy object as events subject');\n }\n var reservedWords = ['on', 'fire', 'off'];\n for (var i = 0; i < reservedWords.length; ++i) {\n if (subject.hasOwnProperty(reservedWords[i])) {\n throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n }\n }\n}\n","module.exports = exposeProperties;\n\n/**\n * Augments `target` object with getter/setter functions, which modify settings\n *\n * @example\n * var target = {};\n * exposeProperties({ age: 42}, target);\n * target.age(); // returns 42\n * target.age(24); // make age 24;\n *\n * var filteredTarget = {};\n * exposeProperties({ age: 42, name: 'John'}, filteredTarget, ['name']);\n * filteredTarget.name(); // returns 'John'\n * filteredTarget.age === undefined; // true\n */\nfunction exposeProperties(settings, target, filter) {\n var needsFilter = Object.prototype.toString.call(filter) === '[object Array]';\n if (needsFilter) {\n for (var i = 0; i < filter.length; ++i) {\n augment(settings, target, filter[i]);\n }\n } else {\n for (var key in settings) {\n augment(settings, target, key);\n }\n }\n}\n\nfunction augment(source, target, key) {\n if (source.hasOwnProperty(key)) {\n if (typeof target[key] === 'function') {\n // this accessor is already defined. Ignore it\n return;\n }\n target[key] = function (value) {\n if (value !== undefined) {\n source[key] = value;\n return target;\n }\n return source[key];\n }\n }\n}\n","module.exports = createLayout;\nmodule.exports.simulator = require('ngraph.physics.simulator');\n\nvar eventify = require('ngraph.events');\n\n/**\n * Creates force based layout for a given graph.\n *\n * @param {ngraph.graph} graph which needs to be laid out\n * @param {object} physicsSettings if you need custom settings\n * for physics simulator you can pass your own settings here. If it's not passed\n * a default one will be created.\n */\nfunction createLayout(graph, physicsSettings) {\n if (!graph) {\n throw new Error('Graph structure cannot be undefined');\n }\n\n var createSimulator = require('ngraph.physics.simulator');\n var physicsSimulator = createSimulator(physicsSettings);\n\n var nodeMass = defaultNodeMass\n if (physicsSettings && typeof physicsSettings.nodeMass === 'function') {\n nodeMass = physicsSettings.nodeMass\n }\n\n var nodeBodies = Object.create(null);\n var springs = {};\n var bodiesCount = 0;\n\n var springTransform = physicsSimulator.settings.springTransform || noop;\n\n // Initialize physics with what we have in the graph:\n initPhysics();\n listenToEvents();\n\n var wasStable = false;\n\n var api = {\n /**\n * Performs one step of iterative layout algorithm\n *\n * @returns {boolean} true if the system should be considered stable; Flase otherwise.\n * The system is stable if no further call to `step()` can improve the layout.\n */\n step: function() {\n if (bodiesCount === 0) return true; // TODO: This will never fire 'stable'\n\n var lastMove = physicsSimulator.step();\n\n // Save the movement in case if someone wants to query it in the step\n // callback.\n api.lastMove = lastMove;\n\n // Allow listeners to perform low-level actions after nodes are updated.\n api.fire('step');\n\n var ratio = lastMove/bodiesCount;\n var isStableNow = ratio <= 0.01; // TODO: The number is somewhat arbitrary...\n\n if (wasStable !== isStableNow) {\n wasStable = isStableNow;\n onStableChanged(isStableNow);\n }\n\n return isStableNow;\n },\n\n /**\n * For a given `nodeId` returns position\n */\n getNodePosition: function (nodeId) {\n return getInitializedBody(nodeId).pos;\n },\n\n /**\n * Sets position of a node to a given coordinates\n * @param {string} nodeId node identifier\n * @param {number} x position of a node\n * @param {number} y position of a node\n * @param {number=} z position of node (only if applicable to body)\n */\n setNodePosition: function (nodeId) {\n var body = getInitializedBody(nodeId);\n body.setPosition.apply(body, Array.prototype.slice.call(arguments, 1));\n physicsSimulator.invalidateBBox();\n },\n\n /**\n * @returns {Object} Link position by link id\n * @returns {Object.from} {x, y} coordinates of link start\n * @returns {Object.to} {x, y} coordinates of link end\n */\n getLinkPosition: function (linkId) {\n var spring = springs[linkId];\n if (spring) {\n return {\n from: spring.from.pos,\n to: spring.to.pos\n };\n }\n },\n\n /**\n * @returns {Object} area required to fit in the graph. Object contains\n * `x1`, `y1` - top left coordinates\n * `x2`, `y2` - bottom right coordinates\n */\n getGraphRect: function () {\n return physicsSimulator.getBBox();\n },\n\n /**\n * Iterates over each body in the layout simulator and performs a callback(body, nodeId)\n */\n forEachBody: forEachBody,\n\n /*\n * Requests layout algorithm to pin/unpin node to its current position\n * Pinned nodes should not be affected by layout algorithm and always\n * remain at their position\n */\n pinNode: function (node, isPinned) {\n var body = getInitializedBody(node.id);\n body.isPinned = !!isPinned;\n },\n\n /**\n * Checks whether given graph's node is currently pinned\n */\n isNodePinned: function (node) {\n return getInitializedBody(node.id).isPinned;\n },\n\n /**\n * Request to release all resources\n */\n dispose: function() {\n graph.off('changed', onGraphChanged);\n api.fire('disposed');\n },\n\n /**\n * Gets physical body for a given node id. If node is not found undefined\n * value is returned.\n */\n getBody: getBody,\n\n /**\n * Gets spring for a given edge.\n *\n * @param {string} linkId link identifer. If two arguments are passed then\n * this argument is treated as formNodeId\n * @param {string=} toId when defined this parameter denotes head of the link\n * and first argument is trated as tail of the link (fromId)\n */\n getSpring: getSpring,\n\n /**\n * [Read only] Gets current physics simulator\n */\n simulator: physicsSimulator,\n\n /**\n * Gets the graph that was used for layout\n */\n graph: graph,\n\n /**\n * Gets amount of movement performed during last step opeartion\n */\n lastMove: 0\n };\n\n eventify(api);\n\n return api;\n\n function forEachBody(cb) {\n Object.keys(nodeBodies).forEach(function(bodyId) {\n cb(nodeBodies[bodyId], bodyId);\n });\n }\n\n function getSpring(fromId, toId) {\n var linkId;\n if (toId === undefined) {\n if (typeof fromId !== 'object') {\n // assume fromId as a linkId:\n linkId = fromId;\n } else {\n // assume fromId to be a link object:\n linkId = fromId.id;\n }\n } else {\n // toId is defined, should grab link:\n var link = graph.hasLink(fromId, toId);\n if (!link) return;\n linkId = link.id;\n }\n\n return springs[linkId];\n }\n\n function getBody(nodeId) {\n return nodeBodies[nodeId];\n }\n\n function listenToEvents() {\n graph.on('changed', onGraphChanged);\n }\n\n function onStableChanged(isStable) {\n api.fire('stable', isStable);\n }\n\n function onGraphChanged(changes) {\n for (var i = 0; i < changes.length; ++i) {\n var change = changes[i];\n if (change.changeType === 'add') {\n if (change.node) {\n initBody(change.node.id);\n }\n if (change.link) {\n initLink(change.link);\n }\n } else if (change.changeType === 'remove') {\n if (change.node) {\n releaseNode(change.node);\n }\n if (change.link) {\n releaseLink(change.link);\n }\n }\n }\n bodiesCount = graph.getNodesCount();\n }\n\n function initPhysics() {\n bodiesCount = 0;\n\n graph.forEachNode(function (node) {\n initBody(node.id);\n bodiesCount += 1;\n });\n\n graph.forEachLink(initLink);\n }\n\n function initBody(nodeId) {\n var body = nodeBodies[nodeId];\n if (!body) {\n var node = graph.getNode(nodeId);\n if (!node) {\n throw new Error('initBody() was called with unknown node id');\n }\n\n var pos = node.position;\n if (!pos) {\n var neighbors = getNeighborBodies(node);\n pos = physicsSimulator.getBestNewBodyPosition(neighbors);\n }\n\n body = physicsSimulator.addBodyAt(pos);\n body.id = nodeId;\n\n nodeBodies[nodeId] = body;\n updateBodyMass(nodeId);\n\n if (isNodeOriginallyPinned(node)) {\n body.isPinned = true;\n }\n }\n }\n\n function releaseNode(node) {\n var nodeId = node.id;\n var body = nodeBodies[nodeId];\n if (body) {\n nodeBodies[nodeId] = null;\n delete nodeBodies[nodeId];\n\n physicsSimulator.removeBody(body);\n }\n }\n\n function initLink(link) {\n updateBodyMass(link.fromId);\n updateBodyMass(link.toId);\n\n var fromBody = nodeBodies[link.fromId],\n toBody = nodeBodies[link.toId],\n spring = physicsSimulator.addSpring(fromBody, toBody, link.length);\n\n springTransform(link, spring);\n\n springs[link.id] = spring;\n }\n\n function releaseLink(link) {\n var spring = springs[link.id];\n if (spring) {\n var from = graph.getNode(link.fromId),\n to = graph.getNode(link.toId);\n\n if (from) updateBodyMass(from.id);\n if (to) updateBodyMass(to.id);\n\n delete springs[link.id];\n\n physicsSimulator.removeSpring(spring);\n }\n }\n\n function getNeighborBodies(node) {\n // TODO: Could probably be done better on memory\n var neighbors = [];\n if (!node.links) {\n return neighbors;\n }\n var maxNeighbors = Math.min(node.links.length, 2);\n for (var i = 0; i < maxNeighbors; ++i) {\n var link = node.links[i];\n var otherBody = link.fromId !== node.id ? nodeBodies[link.fromId] : nodeBodies[link.toId];\n if (otherBody && otherBody.pos) {\n neighbors.push(otherBody);\n }\n }\n\n return neighbors;\n }\n\n function updateBodyMass(nodeId) {\n var body = nodeBodies[nodeId];\n body.mass = nodeMass(nodeId);\n if (Number.isNaN(body.mass)) {\n throw new Error('Node mass should be a number')\n }\n }\n\n /**\n * Checks whether graph node has in its settings pinned attribute,\n * which means layout algorithm cannot move it. Node can be preconfigured\n * as pinned, if it has \"isPinned\" attribute, or when node.data has it.\n *\n * @param {Object} node a graph node to check\n * @return {Boolean} true if node should be treated as pinned; false otherwise.\n */\n function isNodeOriginallyPinned(node) {\n return (node && (node.isPinned || (node.data && node.data.isPinned)));\n }\n\n function getInitializedBody(nodeId) {\n var body = nodeBodies[nodeId];\n if (!body) {\n initBody(nodeId);\n body = nodeBodies[nodeId];\n }\n return body;\n }\n\n /**\n * Calculates mass of a body, which corresponds to node with given id.\n *\n * @param {String|Number} nodeId identifier of a node, for which body mass needs to be calculated\n * @returns {Number} recommended mass of the body;\n */\n function defaultNodeMass(nodeId) {\n var links = graph.getLinks(nodeId);\n if (!links) return 1;\n return 1 + links.length / 3.0;\n }\n}\n\nfunction noop() { }\n","module.exports = function(subject) {\n validateSubject(subject);\n\n var eventsStorage = createEventsStorage(subject);\n subject.on = eventsStorage.on;\n subject.off = eventsStorage.off;\n subject.fire = eventsStorage.fire;\n return subject;\n};\n\nfunction createEventsStorage(subject) {\n // Store all event listeners to this hash. Key is event name, value is array\n // of callback records.\n //\n // A callback record consists of callback function and its optional context:\n // { 'eventName' => [{callback: function, ctx: object}] }\n var registeredEvents = Object.create(null);\n\n return {\n on: function (eventName, callback, ctx) {\n if (typeof callback !== 'function') {\n throw new Error('callback is expected to be a function');\n }\n var handlers = registeredEvents[eventName];\n if (!handlers) {\n handlers = registeredEvents[eventName] = [];\n }\n handlers.push({callback: callback, ctx: ctx});\n\n return subject;\n },\n\n off: function (eventName, callback) {\n var wantToRemoveAll = (typeof eventName === 'undefined');\n if (wantToRemoveAll) {\n // Killing old events storage should be enough in this case:\n registeredEvents = Object.create(null);\n return subject;\n }\n\n if (registeredEvents[eventName]) {\n var deleteAllCallbacksForEvent = (typeof callback !== 'function');\n if (deleteAllCallbacksForEvent) {\n delete registeredEvents[eventName];\n } else {\n var callbacks = registeredEvents[eventName];\n for (var i = 0; i < callbacks.length; ++i) {\n if (callbacks[i].callback === callback) {\n callbacks.splice(i, 1);\n }\n }\n }\n }\n\n return subject;\n },\n\n fire: function (eventName) {\n var callbacks = registeredEvents[eventName];\n if (!callbacks) {\n return subject;\n }\n\n var fireArguments;\n if (arguments.length > 1) {\n fireArguments = Array.prototype.splice.call(arguments, 1);\n }\n for(var i = 0; i < callbacks.length; ++i) {\n var callbackInfo = callbacks[i];\n callbackInfo.callback.apply(callbackInfo.ctx, fireArguments);\n }\n\n return subject;\n }\n };\n}\n\nfunction validateSubject(subject) {\n if (!subject) {\n throw new Error('Eventify cannot use falsy object as events subject');\n }\n var reservedWords = ['on', 'fire', 'off'];\n for (var i = 0; i < reservedWords.length; ++i) {\n if (subject.hasOwnProperty(reservedWords[i])) {\n throw new Error(\"Subject cannot be eventified, since it already has property '\" + reservedWords[i] + \"'\");\n }\n }\n}\n","module.exports = load;\n\nvar createGraph = require('ngraph.graph');\n\nfunction load(jsonGraph, nodeTransform, linkTransform) {\n var stored;\n nodeTransform = nodeTransform || id;\n linkTransform = linkTransform || id;\n if (typeof jsonGraph === 'string') {\n stored = JSON.parse(jsonGraph);\n } else {\n stored = jsonGraph;\n }\n\n var graph = createGraph(),\n i;\n\n if (stored.links === undefined || stored.nodes === undefined) {\n throw new Error('Cannot load graph without links and nodes');\n }\n\n for (i = 0; i < stored.nodes.length; ++i) {\n var parsedNode = nodeTransform(stored.nodes[i]);\n if (!parsedNode.hasOwnProperty('id')) {\n throw new Error('Graph node format is invalid: Node id is missing');\n }\n\n graph.addNode(parsedNode.id, parsedNode.data);\n }\n\n for (i = 0; i < stored.links.length; ++i) {\n var link = linkTransform(stored.links[i]);\n if (!link.hasOwnProperty('fromId') || !link.hasOwnProperty('toId')) {\n throw new Error('Graph link format is invalid. Both fromId and toId are required');\n }\n\n graph.addLink(link.fromId, link.toId, link.data);\n }\n\n return graph;\n}\n\nfunction id(x) { return x; }\n","var createGraph = require('ngraph.graph');\n\nmodule.exports = factory(createGraph);\n\n// Allow other developers have their own createGraph\nmodule.exports.factory = factory;\n\nfunction factory(createGraph) {\n return {\n ladder: ladder,\n complete: complete,\n completeBipartite: completeBipartite,\n balancedBinTree: balancedBinTree,\n path: path,\n circularLadder: circularLadder,\n grid: grid,\n grid3: grid3,\n noLinks: noLinks,\n wattsStrogatz: wattsStrogatz,\n cliqueCircle: cliqueCircle\n };\n\n\n function ladder(n) {\n /**\n * Ladder graph is a graph in form of ladder\n * @param {Number} n Represents number of steps in the ladder\n */\n if (!n || n < 0) {\n throw new Error(\"Invalid number of nodes\");\n }\n\n var g = createGraph(),\n i;\n\n for (i = 0; i < n - 1; ++i) {\n g.addLink(i, i + 1);\n // first row\n g.addLink(n + i, n + i + 1);\n // second row\n g.addLink(i, n + i);\n // ladder's step\n }\n\n g.addLink(n - 1, 2 * n - 1);\n // last step in the ladder;\n\n return g;\n }\n\n function circularLadder(n) {\n /**\n * Circular ladder with n steps.\n *\n * @param {Number} n of steps in the ladder.\n */\n if (!n || n < 0) {\n throw new Error(\"Invalid number of nodes\");\n }\n\n var g = ladder(n);\n\n g.addLink(0, n - 1);\n g.addLink(n, 2 * n - 1);\n return g;\n }\n\n function complete(n) {\n /**\n * Complete graph Kn.\n *\n * @param {Number} n represents number of nodes in the complete graph.\n */\n if (!n || n < 1) {\n throw new Error(\"At least two nodes are expected for complete graph\");\n }\n\n var g = createGraph(),\n i,\n j;\n\n for (i = 0; i < n; ++i) {\n for (j = i + 1; j < n; ++j) {\n if (i !== j) {\n g.addLink(i, j);\n }\n }\n }\n\n return g;\n }\n\n function completeBipartite (n, m) {\n /**\n * Complete bipartite graph K n,m. Each node in the\n * first partition is connected to all nodes in the second partition.\n *\n * @param {Number} n represents number of nodes in the first graph partition\n * @param {Number} m represents number of nodes in the second graph partition\n */\n if (!n || !m || n < 0 || m < 0) {\n throw new Error(\"Graph dimensions are invalid. Number of nodes in each partition should be greater than 0\");\n }\n\n var g = createGraph(),\n i, j;\n\n for (i = 0; i < n; ++i) {\n for (j = n; j < n + m; ++j) {\n g.addLink(i, j);\n }\n }\n\n return g;\n }\n\n function path(n) {\n /**\n * Path graph with n steps.\n *\n * @param {Number} n number of nodes in the path\n */\n if (!n || n < 0) {\n throw new Error(\"Invalid number of nodes\");\n }\n\n var g = createGraph(),\n i;\n\n g.addNode(0);\n\n for (i = 1; i < n; ++i) {\n g.addLink(i - 1, i);\n }\n\n return g;\n }\n\n\n function grid(n, m) {\n /**\n * Grid graph with n rows and m columns.\n *\n * @param {Number} n of rows in the graph.\n * @param {Number} m of columns in the graph.\n */\n if (n < 1 || m < 1) {\n throw new Error(\"Invalid number of nodes in grid graph\");\n }\n var g = createGraph(),\n i,\n j;\n if (n === 1 && m === 1) {\n g.addNode(0);\n return g;\n }\n\n for (i = 0; i < n; ++i) {\n for (j = 0; j < m; ++j) {\n var node = i + j * n;\n if (i > 0) { g.addLink(node, i - 1 + j * n); }\n if (j > 0) { g.addLink(node, i + (j - 1) * n); }\n }\n }\n\n return g;\n }\n\n function grid3(n, m, z) {\n /**\n * 3D grid with n rows and m columns and z levels.\n *\n * @param {Number} n of rows in the graph.\n * @param {Number} m of columns in the graph.\n * @param {Number} z of levels in the graph.\n */\n if (n < 1 || m < 1 || z < 1) {\n throw new Error(\"Invalid number of nodes in grid3 graph\");\n }\n var g = createGraph(),\n i, j, k;\n\n if (n === 1 && m === 1 && z === 1) {\n g.addNode(0);\n return g;\n }\n\n for (k = 0; k < z; ++k) {\n for (i = 0; i < n; ++i) {\n for (j = 0; j < m; ++j) {\n var level = k * n * m;\n var node = i + j * n + level;\n if (i > 0) { g.addLink(node, i - 1 + j * n + level); }\n if (j > 0) { g.addLink(node, i + (j - 1) * n + level); }\n if (k > 0) { g.addLink(node, i + j * n + (k - 1) * n * m ); }\n }\n }\n }\n\n return g;\n }\n\n function balancedBinTree(n) {\n /**\n * Balanced binary tree with n levels.\n *\n * @param {Number} n of levels in the binary tree\n */\n if (n < 0) {\n throw new Error(\"Invalid number of nodes in balanced tree\");\n }\n var g = createGraph(),\n count = Math.pow(2, n),\n level;\n\n if (n === 0) {\n g.addNode(1);\n }\n\n for (level = 1; level < count; ++level) {\n var root = level,\n left = root * 2,\n right = root * 2 + 1;\n\n g.addLink(root, left);\n g.addLink(root, right);\n }\n\n return g;\n }\n\n function noLinks(n) {\n /**\n * Graph with no links\n *\n * @param {Number} n of nodes in the graph\n */\n if (n < 0) {\n throw new Error(\"Number of nodes should be >= 0\");\n }\n\n var g = createGraph(), i;\n for (i = 0; i < n; ++i) {\n g.addNode(i);\n }\n\n return g;\n }\n\n function cliqueCircle(cliqueCount, cliqueSize) {\n /**\n * A circular graph with cliques instead of individual nodes\n *\n * @param {Number} cliqueCount number of cliques inside circle\n * @param {Number} cliqueSize number of nodes inside each clique\n */\n\n if (cliqueCount < 1) throw new Error('Invalid number of cliqueCount in cliqueCircle');\n if (cliqueSize < 1) throw new Error('Invalid number of cliqueSize in cliqueCircle');\n\n var graph = createGraph();\n\n for (var i = 0; i < cliqueCount; ++i) {\n appendClique(cliqueSize, i * cliqueSize)\n\n if (i > 0) {\n graph.addLink(i * cliqueSize, i * cliqueSize - 1);\n }\n }\n graph.addLink(0, graph.getNodesCount() - 1);\n\n return graph;\n\n function appendClique(size, from) {\n for (var i = 0; i < size; ++i) {\n graph.addNode(i + from)\n }\n\n for (var i = 0; i < size; ++i) {\n for (var j = i + 1; j < size; ++j) {\n graph.addLink(i + from, j + from)\n }\n }\n }\n }\n\n function wattsStrogatz(n, k, p, seed) {\n /**\n * Watts-Strogatz small-world graph.\n *\n * @param {Number} n The number of nodes\n * @param {Number} k Each node is connected to k nearest neighbors in ring topology\n * @param {Number} p The probability of rewiring each edge\n\n * @see https://github.com/networkx/networkx/blob/master/networkx/generators/random_graphs.py\n */\n if (k >= n) throw new Error('Choose smaller `k`. It cannot be larger than number of nodes `n`');\n\n\n var random = require('ngraph.random').random(seed || 42);\n\n var g = createGraph(), i, to;\n for (i = 0; i < n; ++i) {\n g.addNode(i);\n }\n\n // connect each node to k/2 neighbors\n var neighborsSize = Math.floor(k/2 + 1);\n for (var j = 1; j < neighborsSize; ++j) {\n for (i = 0; i < n; ++i) {\n to = (j + i) % n;\n g.addLink(i, to);\n }\n }\n\n // rewire edges from each node\n // loop over all nodes in order (label) and neighbors in order (distance)\n // no self loops or multiple edges allowed\n for (j = 1; j < neighborsSize; ++j) {\n for (i = 0; i < n; ++i) {\n if (random.nextDouble() < p) {\n var from = i;\n to = (j + i) % n;\n\n var newTo = random.next(n);\n var needsRewire = (newTo === from || g.hasLink(from, newTo));\n if (needsRewire && g.getLinks(from).length === n - 1) {\n // we cannot rewire this node, it has too many links.\n continue;\n }\n // Enforce no self-loops or multiple edges\n while (needsRewire) {\n newTo = random.next(n);\n needsRewire = (newTo === from || g.hasLink(from, newTo));\n }\n var link = g.hasLink(from, to);\n g.removeLink(link);\n g.addLink(from, newTo);\n }\n }\n }\n\n return g;\n }\n}\n","module.exports = random;\n\n// TODO: Deprecate?\nmodule.exports.random = random,\nmodule.exports.randomIterator = randomIterator\n\n/**\n * Creates seeded PRNG with two methods:\n * next() and nextDouble()\n */\nfunction random(inputSeed) {\n var seed = typeof inputSeed === 'number' ? inputSeed : (+new Date());\n return new Generator(seed)\n}\n\nfunction Generator(seed) {\n this.seed = seed;\n}\n\n/**\n * Generates random integer number in the range from 0 (inclusive) to maxValue (exclusive)\n *\n * @param maxValue Number REQUIRED. Omitting this number will result in NaN values from PRNG.\n */\nGenerator.prototype.next = next;\n\n/**\n * Generates random double number in the range from 0 (inclusive) to 1 (exclusive)\n * This function is the same as Math.random() (except that it could be seeded)\n */\nGenerator.prototype.nextDouble = nextDouble;\n\n/**\n * Returns a random real number uniformly in [0, 1)\n */\nGenerator.prototype.uniform = nextDouble;\n\nGenerator.prototype.gaussian = gaussian;\n\nfunction gaussian() {\n // use the polar form of the Box-Muller transform\n // based on https://introcs.cs.princeton.edu/java/23recursion/StdRandom.java\n var r, x, y;\n do {\n x = this.nextDouble() * 2 - 1;\n y = this.nextDouble() * 2 - 1;\n r = x * x + y * y;\n } while (r >= 1 || r === 0);\n\n return x * Math.sqrt(-2 * Math.log(r)/r);\n}\n\nfunction nextDouble() {\n var seed = this.seed;\n // Robert Jenkins' 32 bit integer hash function.\n seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;\n seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;\n seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;\n seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;\n seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;\n seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;\n this.seed = seed;\n return (seed & 0xfffffff) / 0x10000000;\n}\n\nfunction next(maxValue) {\n return Math.floor(this.nextDouble() * maxValue);\n}\n\n/*\n * Creates iterator over array, which returns items of array in random order\n * Time complexity is guaranteed to be O(n);\n */\nfunction randomIterator(array, customRandom) {\n var localRandom = customRandom || random();\n if (typeof localRandom.next !== 'function') {\n throw new Error('customRandom does not match expected API: next() function is missing');\n }\n\n return {\n forEach: forEach,\n\n /**\n * Shuffles array randomly, in place.\n */\n shuffle: shuffle\n };\n\n function shuffle() {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n }\n\n return array;\n }\n\n function forEach(callback) {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n\n callback(t);\n }\n\n if (array.length) {\n callback(array[0]);\n }\n }\n}","/**\n * @fileOverview Contains definition of the core graph object.\n */\n\n// TODO: need to change storage layer:\n// 1. Be able to get all nodes O(1)\n// 2. Be able to get number of links O(1)\n\n/**\n * @example\n * var graph = require('ngraph.graph')();\n * graph.addNode(1); // graph has one node.\n * graph.addLink(2, 3); // now graph contains three nodes and one link.\n *\n */\nmodule.exports = createGraph;\n\nvar eventify = require('ngraph.events');\n\n/**\n * Creates a new graph\n */\nfunction createGraph(options) {\n // Graph structure is maintained as dictionary of nodes\n // and array of links. Each node has 'links' property which\n // hold all links related to that node. And general links\n // array is used to speed up all links enumeration. This is inefficient\n // in terms of memory, but simplifies coding.\n options = options || {};\n if ('uniqueLinkId' in options) {\n console.warn(\n 'ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\\n' +\n 'Use `multigraph` option instead\\n',\n '\\n',\n 'Note: there is also change in default behavior: From now own each graph\\n'+\n 'is considered to be not a multigraph by default (each edge is unique).'\n );\n\n options.multigraph = options.uniqueLinkId;\n }\n\n // Dear reader, the non-multigraphs do not guarantee that there is only\n // one link for a given pair of node. When this option is set to false\n // we can save some memory and CPU (18% faster for non-multigraph);\n if (options.multigraph === undefined) options.multigraph = false;\n\n var nodes = typeof Object.create === 'function' ? Object.create(null) : {},\n links = [],\n // Hash of multi-edges. Used to track ids of edges between same nodes\n multiEdges = {},\n nodesCount = 0,\n suspendEvents = 0,\n\n forEachNode = createNodeIterator(),\n createLink = options.multigraph ? createUniqueLink : createSingleLink,\n\n // Our graph API provides means to listen to graph changes. Users can subscribe\n // to be notified about changes in the graph by using `on` method. However\n // in some cases they don't use it. To avoid unnecessary memory consumption\n // we will not record graph changes until we have at least one subscriber.\n // Code below supports this optimization.\n //\n // Accumulates all changes made during graph updates.\n // Each change element contains:\n // changeType - one of the strings: 'add', 'remove' or 'update';\n // node - if change is related to node this property is set to changed graph's node;\n // link - if change is related to link this property is set to changed graph's link;\n changes = [],\n recordLinkChange = noop,\n recordNodeChange = noop,\n enterModification = noop,\n exitModification = noop;\n\n // this is our public API:\n var graphPart = {\n /**\n * Adds node to the graph. If node with given id already exists in the graph\n * its data is extended with whatever comes in 'data' argument.\n *\n * @param nodeId the node's identifier. A string or number is preferred.\n * @param [data] additional data for the node being added. If node already\n * exists its data object is augmented with the new one.\n *\n * @return {node} The newly added node or node with given id if it already exists.\n */\n addNode: addNode,\n\n /**\n * Adds a link to the graph. The function always create a new\n * link between two nodes. If one of the nodes does not exists\n * a new node is created.\n *\n * @param fromId link start node id;\n * @param toId link end node id;\n * @param [data] additional data to be set on the new link;\n *\n * @return {link} The newly created link\n */\n addLink: addLink,\n\n /**\n * Removes link from the graph. If link does not exist does nothing.\n *\n * @param link - object returned by addLink() or getLinks() methods.\n *\n * @returns true if link was removed; false otherwise.\n */\n removeLink: removeLink,\n\n /**\n * Removes node with given id from the graph. If node does not exist in the graph\n * does nothing.\n *\n * @param nodeId node's identifier passed to addNode() function.\n *\n * @returns true if node was removed; false otherwise.\n */\n removeNode: removeNode,\n\n /**\n * Gets node with given identifier. If node does not exist undefined value is returned.\n *\n * @param nodeId requested node identifier;\n *\n * @return {node} in with requested identifier or undefined if no such node exists.\n */\n getNode: getNode,\n\n /**\n * Gets number of nodes in this graph.\n *\n * @return number of nodes in the graph.\n */\n getNodesCount: function () {\n return nodesCount;\n },\n\n /**\n * Gets total number of links in the graph.\n */\n getLinksCount: function () {\n return links.length;\n },\n\n /**\n * Gets all links (inbound and outbound) from the node with given id.\n * If node with given id is not found null is returned.\n *\n * @param nodeId requested node identifier.\n *\n * @return Array of links from and to requested node if such node exists;\n * otherwise null is returned.\n */\n getLinks: getLinks,\n\n /**\n * Invokes callback on each node of the graph.\n *\n * @param {Function(node)} callback Function to be invoked. The function\n * is passed one argument: visited node.\n */\n forEachNode: forEachNode,\n\n /**\n * Invokes callback on every linked (adjacent) node to the given one.\n *\n * @param nodeId Identifier of the requested node.\n * @param {Function(node, link)} callback Function to be called on all linked nodes.\n * The function is passed two parameters: adjacent node and link object itself.\n * @param oriented if true graph treated as oriented.\n */\n forEachLinkedNode: forEachLinkedNode,\n\n /**\n * Enumerates all links in the graph\n *\n * @param {Function(link)} callback Function to be called on all links in the graph.\n * The function is passed one parameter: graph's link object.\n *\n * Link object contains at least the following fields:\n * fromId - node id where link starts;\n * toId - node id where link ends,\n * data - additional data passed to graph.addLink() method.\n */\n forEachLink: forEachLink,\n\n /**\n * Suspend all notifications about graph changes until\n * endUpdate is called.\n */\n beginUpdate: enterModification,\n\n /**\n * Resumes all notifications about graph changes and fires\n * graph 'changed' event in case there are any pending changes.\n */\n endUpdate: exitModification,\n\n /**\n * Removes all nodes and links from the graph.\n */\n clear: clear,\n\n /**\n * Detects whether there is a link between two nodes.\n * Operation complexity is O(n) where n - number of links of a node.\n * NOTE: this function is synonim for getLink()\n *\n * @returns link if there is one. null otherwise.\n */\n hasLink: getLink,\n\n /**\n * Detects whether there is a node with given id\n * \n * Operation complexity is O(1)\n * NOTE: this function is synonim for getNode()\n *\n * @returns node if there is one; Falsy value otherwise.\n */\n hasNode: getNode,\n\n /**\n * Gets an edge between two nodes.\n * Operation complexity is O(n) where n - number of links of a node.\n *\n * @param {string} fromId link start identifier\n * @param {string} toId link end identifier\n *\n * @returns link if there is one. null otherwise.\n */\n getLink: getLink\n };\n\n // this will add `on()` and `fire()` methods.\n eventify(graphPart);\n\n monitorSubscribers();\n\n return graphPart;\n\n function monitorSubscribers() {\n var realOn = graphPart.on;\n\n // replace real `on` with our temporary on, which will trigger change\n // modification monitoring:\n graphPart.on = on;\n\n function on() {\n // now it's time to start tracking stuff:\n graphPart.beginUpdate = enterModification = enterModificationReal;\n graphPart.endUpdate = exitModification = exitModificationReal;\n recordLinkChange = recordLinkChangeReal;\n recordNodeChange = recordNodeChangeReal;\n\n // this will replace current `on` method with real pub/sub from `eventify`.\n graphPart.on = realOn;\n // delegate to real `on` handler:\n return realOn.apply(graphPart, arguments);\n }\n }\n\n function recordLinkChangeReal(link, changeType) {\n changes.push({\n link: link,\n changeType: changeType\n });\n }\n\n function recordNodeChangeReal(node, changeType) {\n changes.push({\n node: node,\n changeType: changeType\n });\n }\n\n function addNode(nodeId, data) {\n if (nodeId === undefined) {\n throw new Error('Invalid node identifier');\n }\n\n enterModification();\n\n var node = getNode(nodeId);\n if (!node) {\n node = new Node(nodeId, data);\n nodesCount++;\n recordNodeChange(node, 'add');\n } else {\n node.data = data;\n recordNodeChange(node, 'update');\n }\n\n nodes[nodeId] = node;\n\n exitModification();\n return node;\n }\n\n function getNode(nodeId) {\n return nodes[nodeId];\n }\n\n function removeNode(nodeId) {\n var node = getNode(nodeId);\n if (!node) {\n return false;\n }\n\n enterModification();\n\n var prevLinks = node.links;\n if (prevLinks) {\n node.links = null;\n for(var i = 0; i < prevLinks.length; ++i) {\n removeLink(prevLinks[i]);\n }\n }\n\n delete nodes[nodeId];\n nodesCount--;\n\n recordNodeChange(node, 'remove');\n\n exitModification();\n\n return true;\n }\n\n\n function addLink(fromId, toId, data) {\n enterModification();\n\n var fromNode = getNode(fromId) || addNode(fromId);\n var toNode = getNode(toId) || addNode(toId);\n\n var link = createLink(fromId, toId, data);\n\n links.push(link);\n\n // TODO: this is not cool. On large graphs potentially would consume more memory.\n addLinkToNode(fromNode, link);\n if (fromId !== toId) {\n // make sure we are not duplicating links for self-loops\n addLinkToNode(toNode, link);\n }\n\n recordLinkChange(link, 'add');\n\n exitModification();\n\n return link;\n }\n\n function createSingleLink(fromId, toId, data) {\n var linkId = makeLinkId(fromId, toId);\n return new Link(fromId, toId, data, linkId);\n }\n\n function createUniqueLink(fromId, toId, data) {\n // TODO: Get rid of this method.\n var linkId = makeLinkId(fromId, toId);\n var isMultiEdge = multiEdges.hasOwnProperty(linkId);\n if (isMultiEdge || getLink(fromId, toId)) {\n if (!isMultiEdge) {\n multiEdges[linkId] = 0;\n }\n var suffix = '@' + (++multiEdges[linkId]);\n linkId = makeLinkId(fromId + suffix, toId + suffix);\n }\n\n return new Link(fromId, toId, data, linkId);\n }\n\n function getLinks(nodeId) {\n var node = getNode(nodeId);\n return node ? node.links : null;\n }\n\n function removeLink(link) {\n if (!link) {\n return false;\n }\n var idx = indexOfElementInArray(link, links);\n if (idx < 0) {\n return false;\n }\n\n enterModification();\n\n links.splice(idx, 1);\n\n var fromNode = getNode(link.fromId);\n var toNode = getNode(link.toId);\n\n if (fromNode) {\n idx = indexOfElementInArray(link, fromNode.links);\n if (idx >= 0) {\n fromNode.links.splice(idx, 1);\n }\n }\n\n if (toNode) {\n idx = indexOfElementInArray(link, toNode.links);\n if (idx >= 0) {\n toNode.links.splice(idx, 1);\n }\n }\n\n recordLinkChange(link, 'remove');\n\n exitModification();\n\n return true;\n }\n\n function getLink(fromNodeId, toNodeId) {\n // TODO: Use sorted links to speed this up\n var node = getNode(fromNodeId),\n i;\n if (!node || !node.links) {\n return null;\n }\n\n for (i = 0; i < node.links.length; ++i) {\n var link = node.links[i];\n if (link.fromId === fromNodeId && link.toId === toNodeId) {\n return link;\n }\n }\n\n return null; // no link.\n }\n\n function clear() {\n enterModification();\n forEachNode(function(node) {\n removeNode(node.id);\n });\n exitModification();\n }\n\n function forEachLink(callback) {\n var i, length;\n if (typeof callback === 'function') {\n for (i = 0, length = links.length; i < length; ++i) {\n callback(links[i]);\n }\n }\n }\n\n function forEachLinkedNode(nodeId, callback, oriented) {\n var node = getNode(nodeId);\n\n if (node && node.links && typeof callback === 'function') {\n if (oriented) {\n return forEachOrientedLink(node.links, nodeId, callback);\n } else {\n return forEachNonOrientedLink(node.links, nodeId, callback);\n }\n }\n }\n\n function forEachNonOrientedLink(links, nodeId, callback) {\n var quitFast;\n for (var i = 0; i < links.length; ++i) {\n var link = links[i];\n var linkedNodeId = link.fromId === nodeId ? link.toId : link.fromId;\n\n quitFast = callback(nodes[linkedNodeId], link);\n if (quitFast) {\n return true; // Client does not need more iterations. Break now.\n }\n }\n }\n\n function forEachOrientedLink(links, nodeId, callback) {\n var quitFast;\n for (var i = 0; i < links.length; ++i) {\n var link = links[i];\n if (link.fromId === nodeId) {\n quitFast = callback(nodes[link.toId], link);\n if (quitFast) {\n return true; // Client does not need more iterations. Break now.\n }\n }\n }\n }\n\n // we will not fire anything until users of this library explicitly call `on()`\n // method.\n function noop() {}\n\n // Enter, Exit modification allows bulk graph updates without firing events.\n function enterModificationReal() {\n suspendEvents += 1;\n }\n\n function exitModificationReal() {\n suspendEvents -= 1;\n if (suspendEvents === 0 && changes.length > 0) {\n graphPart.fire('changed', changes);\n changes.length = 0;\n }\n }\n\n function createNodeIterator() {\n // Object.keys iterator is 1.3x faster than `for in` loop.\n // See `https://github.com/anvaka/ngraph.graph/tree/bench-for-in-vs-obj-keys`\n // branch for perf test\n return Object.keys ? objectKeysIterator : forInIterator;\n }\n\n function objectKeysIterator(callback) {\n if (typeof callback !== 'function') {\n return;\n }\n\n var keys = Object.keys(nodes);\n for (var i = 0; i < keys.length; ++i) {\n if (callback(nodes[keys[i]])) {\n return true; // client doesn't want to proceed. Return.\n }\n }\n }\n\n function forInIterator(callback) {\n if (typeof callback !== 'function') {\n return;\n }\n var node;\n\n for (node in nodes) {\n if (callback(nodes[node])) {\n return true; // client doesn't want to proceed. Return.\n }\n }\n }\n}\n\n// need this for old browsers. Should this be a separate module?\nfunction indexOfElementInArray(element, array) {\n if (!array) return -1;\n\n if (array.indexOf) {\n return array.indexOf(element);\n }\n\n var len = array.length,\n i;\n\n for (i = 0; i < len; i += 1) {\n if (array[i] === element) {\n return i;\n }\n }\n\n return -1;\n}\n\n/**\n * Internal structure to represent node;\n */\nfunction Node(id, data) {\n this.id = id;\n this.links = null;\n this.data = data;\n}\n\nfunction addLinkToNode(node, link) {\n if (node.links) {\n node.links.push(link);\n } else {\n node.links = [link];\n }\n}\n\n/**\n * Internal structure to represent links;\n */\nfunction Link(fromId, toId, data, id) {\n this.fromId = fromId;\n this.toId = toId;\n this.data = data;\n this.id = id;\n}\n\nfunction hashCode(str) {\n var hash = 0, i, chr, len;\n if (str.length == 0) return hash;\n for (i = 0, len = str.length; i < len; i++) {\n chr = str.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n return hash;\n}\n\nfunction makeLinkId(fromId, toId) {\n return fromId.toString() + '👉 ' + toId.toString();\n}\n","module.exports = merge;\n\n/**\n * Augments `target` with properties in `options`. Does not override\n * target's properties if they are defined and matches expected type in \n * options\n *\n * @returns {Object} merged object\n */\nfunction merge(target, options) {\n var key;\n if (!target) { target = {}; }\n if (options) {\n for (key in options) {\n if (options.hasOwnProperty(key)) {\n var targetHasIt = target.hasOwnProperty(key),\n optionsValueType = typeof options[key],\n shouldReplace = !targetHasIt || (typeof target[key] !== optionsValueType);\n\n if (shouldReplace) {\n target[key] = options[key];\n } else if (optionsValueType === 'object') {\n // go deep, don't care about loops here, we are simple API!:\n target[key] = merge(target[key], options[key]);\n }\n }\n }\n }\n\n return target;\n}\n","module.exports = {\n Body: Body,\n Vector2d: Vector2d,\n Body3d: Body3d,\n Vector3d: Vector3d\n};\n\nfunction Body(x, y) {\n this.pos = new Vector2d(x, y);\n this.prevPos = new Vector2d(x, y);\n this.force = new Vector2d();\n this.velocity = new Vector2d();\n this.mass = 1;\n}\n\nBody.prototype.setPosition = function (x, y) {\n this.prevPos.x = this.pos.x = x;\n this.prevPos.y = this.pos.y = y;\n};\n\nfunction Vector2d(x, y) {\n if (x && typeof x !== 'number') {\n // could be another vector\n this.x = typeof x.x === 'number' ? x.x : 0;\n this.y = typeof x.y === 'number' ? x.y : 0;\n } else {\n this.x = typeof x === 'number' ? x : 0;\n this.y = typeof y === 'number' ? y : 0;\n }\n}\n\nVector2d.prototype.reset = function () {\n this.x = this.y = 0;\n};\n\nfunction Body3d(x, y, z) {\n this.pos = new Vector3d(x, y, z);\n this.prevPos = new Vector3d(x, y, z);\n this.force = new Vector3d();\n this.velocity = new Vector3d();\n this.mass = 1;\n}\n\nBody3d.prototype.setPosition = function (x, y, z) {\n this.prevPos.x = this.pos.x = x;\n this.prevPos.y = this.pos.y = y;\n this.prevPos.z = this.pos.z = z;\n};\n\nfunction Vector3d(x, y, z) {\n if (x && typeof x !== 'number') {\n // could be another vector\n this.x = typeof x.x === 'number' ? x.x : 0;\n this.y = typeof x.y === 'number' ? x.y : 0;\n this.z = typeof x.z === 'number' ? x.z : 0;\n } else {\n this.x = typeof x === 'number' ? x : 0;\n this.y = typeof y === 'number' ? y : 0;\n this.z = typeof z === 'number' ? z : 0;\n }\n};\n\nVector3d.prototype.reset = function () {\n this.x = this.y = this.z = 0;\n};\n","/**\n * Manages a simulation of physical forces acting on bodies and springs.\n */\nmodule.exports = physicsSimulator;\n\nfunction physicsSimulator(settings) {\n var Spring = require('./lib/spring');\n var expose = require('ngraph.expose');\n var merge = require('ngraph.merge');\n var eventify = require('ngraph.events');\n\n settings = merge(settings, {\n /**\n * Ideal length for links (springs in physical model).\n */\n springLength: 30,\n\n /**\n * Hook's law coefficient. 1 - solid spring.\n */\n springCoeff: 0.0008,\n\n /**\n * Coulomb's law coefficient. It's used to repel nodes thus should be negative\n * if you make it positive nodes start attract each other :).\n */\n gravity: -1.2,\n\n /**\n * Theta coefficient from Barnes Hut simulation. Ranged between (0, 1).\n * The closer it's to 1 the more nodes algorithm will have to go through.\n * Setting it to one makes Barnes Hut simulation no different from\n * brute-force forces calculation (each node is considered).\n */\n theta: 0.8,\n\n /**\n * Drag force coefficient. Used to slow down system, thus should be less than 1.\n * The closer it is to 0 the less tight system will be.\n */\n dragCoeff: 0.02,\n\n /**\n * Default time step (dt) for forces integration\n */\n timeStep : 20,\n });\n\n // We allow clients to override basic factory methods:\n var createQuadTree = settings.createQuadTree || require('ngraph.quadtreebh');\n var createBounds = settings.createBounds || require('./lib/bounds');\n var createDragForce = settings.createDragForce || require('./lib/dragForce');\n var createSpringForce = settings.createSpringForce || require('./lib/springForce');\n var integrate = settings.integrator || require('./lib/eulerIntegrator');\n var createBody = settings.createBody || require('./lib/createBody');\n\n var bodies = [], // Bodies in this simulation.\n springs = [], // Springs in this simulation.\n quadTree = createQuadTree(settings),\n bounds = createBounds(bodies, settings),\n springForce = createSpringForce(settings),\n dragForce = createDragForce(settings);\n\n var bboxNeedsUpdate = true;\n var totalMovement = 0; // how much movement we made on last step\n\n var publicApi = {\n /**\n * Array of bodies, registered with current simulator\n *\n * Note: To add new body, use addBody() method. This property is only\n * exposed for testing/performance purposes.\n */\n bodies: bodies,\n\n quadTree: quadTree,\n\n /**\n * Array of springs, registered with current simulator\n *\n * Note: To add new spring, use addSpring() method. This property is only\n * exposed for testing/performance purposes.\n */\n springs: springs,\n\n /**\n * Returns settings with which current simulator was initialized\n */\n settings: settings,\n\n /**\n * Performs one step of force simulation.\n *\n * @returns {boolean} true if system is considered stable; False otherwise.\n */\n step: function () {\n accumulateForces();\n\n var movement = integrate(bodies, settings.timeStep);\n bounds.update();\n\n return movement;\n },\n\n /**\n * Adds body to the system\n *\n * @param {ngraph.physics.primitives.Body} body physical body\n *\n * @returns {ngraph.physics.primitives.Body} added body\n */\n addBody: function (body) {\n if (!body) {\n throw new Error('Body is required');\n }\n bodies.push(body);\n\n return body;\n },\n\n /**\n * Adds body to the system at given position\n *\n * @param {Object} pos position of a body\n *\n * @returns {ngraph.physics.primitives.Body} added body\n */\n addBodyAt: function (pos) {\n if (!pos) {\n throw new Error('Body position is required');\n }\n var body = createBody(pos);\n bodies.push(body);\n\n return body;\n },\n\n /**\n * Removes body from the system\n *\n * @param {ngraph.physics.primitives.Body} body to remove\n *\n * @returns {Boolean} true if body found and removed. falsy otherwise;\n */\n removeBody: function (body) {\n if (!body) { return; }\n\n var idx = bodies.indexOf(body);\n if (idx < 0) { return; }\n\n bodies.splice(idx, 1);\n if (bodies.length === 0) {\n bounds.reset();\n }\n return true;\n },\n\n /**\n * Adds a spring to this simulation.\n *\n * @returns {Object} - a handle for a spring. If you want to later remove\n * spring pass it to removeSpring() method.\n */\n addSpring: function (body1, body2, springLength, springWeight, springCoefficient) {\n if (!body1 || !body2) {\n throw new Error('Cannot add null spring to force simulator');\n }\n\n if (typeof springLength !== 'number') {\n springLength = -1; // assume global configuration\n }\n\n var spring = new Spring(body1, body2, springLength, springCoefficient >= 0 ? springCoefficient : -1, springWeight);\n springs.push(spring);\n\n // TODO: could mark simulator as dirty.\n return spring;\n },\n\n /**\n * Returns amount of movement performed on last step() call\n */\n getTotalMovement: function () {\n return totalMovement;\n },\n\n /**\n * Removes spring from the system\n *\n * @param {Object} spring to remove. Spring is an object returned by addSpring\n *\n * @returns {Boolean} true if spring found and removed. falsy otherwise;\n */\n removeSpring: function (spring) {\n if (!spring) { return; }\n var idx = springs.indexOf(spring);\n if (idx > -1) {\n springs.splice(idx, 1);\n return true;\n }\n },\n\n getBestNewBodyPosition: function (neighbors) {\n return bounds.getBestNewPosition(neighbors);\n },\n\n /**\n * Returns bounding box which covers all bodies\n */\n getBBox: function () {\n if (bboxNeedsUpdate) {\n bounds.update();\n bboxNeedsUpdate = false;\n }\n return bounds.box;\n },\n\n invalidateBBox: function () {\n bboxNeedsUpdate = true;\n },\n\n gravity: function (value) {\n if (value !== undefined) {\n settings.gravity = value;\n quadTree.options({gravity: value});\n return this;\n } else {\n return settings.gravity;\n }\n },\n\n theta: function (value) {\n if (value !== undefined) {\n settings.theta = value;\n quadTree.options({theta: value});\n return this;\n } else {\n return settings.theta;\n }\n }\n };\n\n // allow settings modification via public API:\n expose(settings, publicApi);\n\n eventify(publicApi);\n\n return publicApi;\n\n function accumulateForces() {\n // Accumulate forces acting on bodies.\n var body,\n i = bodies.length;\n\n if (i) {\n // only add bodies if there the array is not empty:\n quadTree.insertBodies(bodies); // performance: O(n * log n)\n while (i--) {\n body = bodies[i];\n // If body is pinned there is no point updating its forces - it should\n // never move:\n if (!body.isPinned) {\n body.force.reset();\n\n quadTree.updateBodyForce(body);\n dragForce.update(body);\n }\n }\n }\n\n i = springs.length;\n while(i--) {\n springForce.update(springs[i]);\n }\n }\n};\n","module.exports = function (bodies, settings) {\n var random = require('ngraph.random').random(42);\n var boundingBox = { x1: 0, y1: 0, x2: 0, y2: 0 };\n\n return {\n box: boundingBox,\n\n update: updateBoundingBox,\n\n reset : function () {\n boundingBox.x1 = boundingBox.y1 = 0;\n boundingBox.x2 = boundingBox.y2 = 0;\n },\n\n getBestNewPosition: function (neighbors) {\n var graphRect = boundingBox;\n\n var baseX = 0, baseY = 0;\n\n if (neighbors.length) {\n for (var i = 0; i < neighbors.length; ++i) {\n baseX += neighbors[i].pos.x;\n baseY += neighbors[i].pos.y;\n }\n\n baseX /= neighbors.length;\n baseY /= neighbors.length;\n } else {\n baseX = (graphRect.x1 + graphRect.x2) / 2;\n baseY = (graphRect.y1 + graphRect.y2) / 2;\n }\n\n var springLength = settings.springLength;\n return {\n x: baseX + random.next(springLength) - springLength / 2,\n y: baseY + random.next(springLength) - springLength / 2\n };\n }\n };\n\n function updateBoundingBox() {\n var i = bodies.length;\n if (i === 0) { return; } // don't have to wory here.\n\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE;\n\n while(i--) {\n // this is O(n), could it be done faster with quadtree?\n // how about pinned nodes?\n var body = bodies[i];\n if (body.isPinned) {\n body.pos.x = body.prevPos.x;\n body.pos.y = body.prevPos.y;\n } else {\n body.prevPos.x = body.pos.x;\n body.prevPos.y = body.pos.y;\n }\n if (body.pos.x < x1) {\n x1 = body.pos.x;\n }\n if (body.pos.x > x2) {\n x2 = body.pos.x;\n }\n if (body.pos.y < y1) {\n y1 = body.pos.y;\n }\n if (body.pos.y > y2) {\n y2 = body.pos.y;\n }\n }\n\n boundingBox.x1 = x1;\n boundingBox.x2 = x2;\n boundingBox.y1 = y1;\n boundingBox.y2 = y2;\n }\n}\n","var physics = require('ngraph.physics.primitives');\n\nmodule.exports = function(pos) {\n return new physics.Body(pos);\n}\n","/**\n * Represents drag force, which reduces force value on each step by given\n * coefficient.\n *\n * @param {Object} options for the drag force\n * @param {Number=} options.dragCoeff drag force coefficient. 0.1 by default\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge'),\n expose = require('ngraph.expose');\n\n options = merge(options, {\n dragCoeff: 0.02\n });\n\n var api = {\n update : function (body) {\n body.force.x -= options.dragCoeff * body.velocity.x;\n body.force.y -= options.dragCoeff * body.velocity.y;\n }\n };\n\n // let easy access to dragCoeff:\n expose(options, api, ['dragCoeff']);\n\n return api;\n};\n","/**\n * Performs forces integration, using given timestep. Uses Euler method to solve\n * differential equation (http://en.wikipedia.org/wiki/Euler_method ).\n *\n * @returns {Number} squared distance of total position updates.\n */\n\nmodule.exports = integrate;\n\nfunction integrate(bodies, timeStep) {\n var dx = 0, tx = 0,\n dy = 0, ty = 0,\n i,\n max = bodies.length;\n\n if (max === 0) {\n return 0;\n }\n\n for (i = 0; i < max; ++i) {\n var body = bodies[i],\n coeff = timeStep / body.mass;\n\n body.velocity.x += coeff * body.force.x;\n body.velocity.y += coeff * body.force.y;\n var vx = body.velocity.x,\n vy = body.velocity.y,\n v = Math.sqrt(vx * vx + vy * vy);\n\n if (v > 1) {\n body.velocity.x = vx / v;\n body.velocity.y = vy / v;\n }\n\n dx = timeStep * body.velocity.x;\n dy = timeStep * body.velocity.y;\n\n body.pos.x += dx;\n body.pos.y += dy;\n\n tx += Math.abs(dx); ty += Math.abs(dy);\n }\n\n return (tx * tx + ty * ty)/max;\n}\n","module.exports = Spring;\n\n/**\n * Represents a physical spring. Spring connects two bodies, has rest length\n * stiffness coefficient and optional weight\n */\nfunction Spring(fromBody, toBody, length, coeff, weight) {\n this.from = fromBody;\n this.to = toBody;\n this.length = length;\n this.coeff = coeff;\n\n this.weight = typeof weight === 'number' ? weight : 1;\n};\n","/**\n * Represents spring force, which updates forces acting on two bodies, conntected\n * by a spring.\n *\n * @param {Object} options for the spring force\n * @param {Number=} options.springCoeff spring force coefficient.\n * @param {Number=} options.springLength desired length of a spring at rest.\n */\nmodule.exports = function (options) {\n var merge = require('ngraph.merge');\n var random = require('ngraph.random').random(42);\n var expose = require('ngraph.expose');\n\n options = merge(options, {\n springCoeff: 0.0002,\n springLength: 80\n });\n\n var api = {\n /**\n * Upsates forces acting on a spring\n */\n update : function (spring) {\n var body1 = spring.from,\n body2 = spring.to,\n length = spring.length < 0 ? options.springLength : spring.length,\n dx = body2.pos.x - body1.pos.x,\n dy = body2.pos.y - body1.pos.y,\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n var d = r - length;\n var coeff = ((!spring.coeff || spring.coeff < 0) ? options.springCoeff : spring.coeff) * d / r * spring.weight;\n\n body1.force.x += coeff * dx;\n body1.force.y += coeff * dy;\n\n body2.force.x -= coeff * dx;\n body2.force.y -= coeff * dy;\n }\n };\n\n expose(options, api, ['springCoeff', 'springLength']);\n return api;\n}\n","/**\n * This is Barnes Hut simulation algorithm for 2d case. Implementation\n * is highly optimized (avoids recusion and gc pressure)\n *\n * http://www.cs.princeton.edu/courses/archive/fall03/cs126/assignments/barnes-hut.html\n */\n\nmodule.exports = function(options) {\n options = options || {};\n options.gravity = typeof options.gravity === 'number' ? options.gravity : -1;\n options.theta = typeof options.theta === 'number' ? options.theta : 0.8;\n\n // we require deterministic randomness here\n var random = require('ngraph.random').random(1984),\n Node = require('./node'),\n InsertStack = require('./insertStack'),\n isSamePosition = require('./isSamePosition');\n\n var gravity = options.gravity,\n updateQueue = [],\n insertStack = new InsertStack(),\n theta = options.theta,\n\n nodesCache = [],\n currentInCache = 0,\n root = newNode();\n\n return {\n insertBodies: insertBodies,\n /**\n * Gets root node if its present\n */\n getRoot: function() {\n return root;\n },\n updateBodyForce: update,\n options: function(newOptions) {\n if (newOptions) {\n if (typeof newOptions.gravity === 'number') {\n gravity = newOptions.gravity;\n }\n if (typeof newOptions.theta === 'number') {\n theta = newOptions.theta;\n }\n\n return this;\n }\n\n return {\n gravity: gravity,\n theta: theta\n };\n }\n };\n\n function newNode() {\n // To avoid pressure on GC we reuse nodes.\n var node = nodesCache[currentInCache];\n if (node) {\n node.quad0 = null;\n node.quad1 = null;\n node.quad2 = null;\n node.quad3 = null;\n node.body = null;\n node.mass = node.massX = node.massY = 0;\n node.left = node.right = node.top = node.bottom = 0;\n } else {\n node = new Node();\n nodesCache[currentInCache] = node;\n }\n\n ++currentInCache;\n return node;\n }\n\n function update(sourceBody) {\n var queue = updateQueue,\n v,\n dx,\n dy,\n r, fx = 0,\n fy = 0,\n queueLength = 1,\n shiftIdx = 0,\n pushIdx = 1;\n\n queue[0] = root;\n\n while (queueLength) {\n var node = queue[shiftIdx],\n body = node.body;\n\n queueLength -= 1;\n shiftIdx += 1;\n var differentBody = (body !== sourceBody);\n if (body && differentBody) {\n // If the current node is a leaf node (and it is not source body),\n // calculate the force exerted by the current node on body, and add this\n // amount to body's net force.\n dx = body.pos.x - sourceBody.pos.x;\n dy = body.pos.y - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Poor man's protection against zero distance.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n\n // This is standard gravition force calculation but we divide\n // by r^3 to save two operations when normalizing force vector.\n v = gravity * body.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else if (differentBody) {\n // Otherwise, calculate the ratio s / r, where s is the width of the region\n // represented by the internal node, and r is the distance between the body\n // and the node's center-of-mass\n dx = node.massX / node.mass - sourceBody.pos.x;\n dy = node.massY / node.mass - sourceBody.pos.y;\n r = Math.sqrt(dx * dx + dy * dy);\n\n if (r === 0) {\n // Sorry about code duplucation. I don't want to create many functions\n // right away. Just want to see performance first.\n dx = (random.nextDouble() - 0.5) / 50;\n dy = (random.nextDouble() - 0.5) / 50;\n r = Math.sqrt(dx * dx + dy * dy);\n }\n // If s / r < θ, treat this internal node as a single body, and calculate the\n // force it exerts on sourceBody, and add this amount to sourceBody's net force.\n if ((node.right - node.left) / r < theta) {\n // in the if statement above we consider node's width only\n // because the region was squarified during tree creation.\n // Thus there is no difference between using width or height.\n v = gravity * node.mass * sourceBody.mass / (r * r * r);\n fx += v * dx;\n fy += v * dy;\n } else {\n // Otherwise, run the procedure recursively on each of the current node's children.\n\n // I intentionally unfolded this loop, to save several CPU cycles.\n if (node.quad0) {\n queue[pushIdx] = node.quad0;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad1) {\n queue[pushIdx] = node.quad1;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad2) {\n queue[pushIdx] = node.quad2;\n queueLength += 1;\n pushIdx += 1;\n }\n if (node.quad3) {\n queue[pushIdx] = node.quad3;\n queueLength += 1;\n pushIdx += 1;\n }\n }\n }\n }\n\n sourceBody.force.x += fx;\n sourceBody.force.y += fy;\n }\n\n function insertBodies(bodies) {\n var x1 = Number.MAX_VALUE,\n y1 = Number.MAX_VALUE,\n x2 = Number.MIN_VALUE,\n y2 = Number.MIN_VALUE,\n i,\n max = bodies.length;\n\n // To reduce quad tree depth we are looking for exact bounding box of all particles.\n i = max;\n while (i--) {\n var x = bodies[i].pos.x;\n var y = bodies[i].pos.y;\n if (x < x1) {\n x1 = x;\n }\n if (x > x2) {\n x2 = x;\n }\n if (y < y1) {\n y1 = y;\n }\n if (y > y2) {\n y2 = y;\n }\n }\n\n // Squarify the bounds.\n var dx = x2 - x1,\n dy = y2 - y1;\n if (dx > dy) {\n y2 = y1 + dx;\n } else {\n x2 = x1 + dy;\n }\n\n currentInCache = 0;\n root = newNode();\n root.left = x1;\n root.right = x2;\n root.top = y1;\n root.bottom = y2;\n\n i = max - 1;\n if (i >= 0) {\n root.body = bodies[i];\n }\n while (i--) {\n insert(bodies[i], root);\n }\n }\n\n function insert(newBody) {\n insertStack.reset();\n insertStack.push(root, newBody);\n\n while (!insertStack.isEmpty()) {\n var stackItem = insertStack.pop(),\n node = stackItem.node,\n body = stackItem.body;\n\n if (!node.body) {\n // This is internal node. Update the total mass of the node and center-of-mass.\n var x = body.pos.x;\n var y = body.pos.y;\n node.mass = node.mass + body.mass;\n node.massX = node.massX + body.mass * x;\n node.massY = node.massY + body.mass * y;\n\n // Recursively insert the body in the appropriate quadrant.\n // But first find the appropriate quadrant.\n var quadIdx = 0, // Assume we are in the 0's quad.\n left = node.left,\n right = (node.right + left) / 2,\n top = node.top,\n bottom = (node.bottom + top) / 2;\n\n if (x > right) { // somewhere in the eastern part.\n quadIdx = quadIdx + 1;\n left = right;\n right = node.right;\n }\n if (y > bottom) { // and in south.\n quadIdx = quadIdx + 2;\n top = bottom;\n bottom = node.bottom;\n }\n\n var child = getChild(node, quadIdx);\n if (!child) {\n // The node is internal but this quadrant is not taken. Add\n // subnode to it.\n child = newNode();\n child.left = left;\n child.top = top;\n child.right = right;\n child.bottom = bottom;\n child.body = body;\n\n setChild(node, quadIdx, child);\n } else {\n // continue searching in this quadrant.\n insertStack.push(child, body);\n }\n } else {\n // We are trying to add to the leaf node.\n // We have to convert current leaf into internal node\n // and continue adding two nodes.\n var oldBody = node.body;\n node.body = null; // internal nodes do not cary bodies\n\n if (isSamePosition(oldBody.pos, body.pos)) {\n // Prevent infinite subdivision by bumping one node\n // anywhere in this quadrant\n var retriesCount = 3;\n do {\n var offset = random.nextDouble();\n var dx = (node.right - node.left) * offset;\n var dy = (node.bottom - node.top) * offset;\n\n oldBody.pos.x = node.left + dx;\n oldBody.pos.y = node.top + dy;\n retriesCount -= 1;\n // Make sure we don't bump it out of the box. If we do, next iteration should fix it\n } while (retriesCount > 0 && isSamePosition(oldBody.pos, body.pos));\n\n if (retriesCount === 0 && isSamePosition(oldBody.pos, body.pos)) {\n // This is very bad, we ran out of precision.\n // if we do not return from the method we'll get into\n // infinite loop here. So we sacrifice correctness of layout, and keep the app running\n // Next layout iteration should get larger bounding box in the first step and fix this\n return;\n }\n }\n // Next iteration should subdivide node further.\n insertStack.push(node, oldBody);\n insertStack.push(node, body);\n }\n }\n }\n};\n\nfunction getChild(node, idx) {\n if (idx === 0) return node.quad0;\n if (idx === 1) return node.quad1;\n if (idx === 2) return node.quad2;\n if (idx === 3) return node.quad3;\n return null;\n}\n\nfunction setChild(node, idx, child) {\n if (idx === 0) node.quad0 = child;\n else if (idx === 1) node.quad1 = child;\n else if (idx === 2) node.quad2 = child;\n else if (idx === 3) node.quad3 = child;\n}\n","module.exports = InsertStack;\n\n/**\n * Our implmentation of QuadTree is non-recursive to avoid GC hit\n * This data structure represent stack of elements\n * which we are trying to insert into quad tree.\n */\nfunction InsertStack () {\n this.stack = [];\n this.popIdx = 0;\n}\n\nInsertStack.prototype = {\n isEmpty: function() {\n return this.popIdx === 0;\n },\n push: function (node, body) {\n var item = this.stack[this.popIdx];\n if (!item) {\n // we are trying to avoid memory pressue: create new element\n // only when absolutely necessary\n this.stack[this.popIdx] = new InsertStackElement(node, body);\n } else {\n item.node = node;\n item.body = body;\n }\n ++this.popIdx;\n },\n pop: function () {\n if (this.popIdx > 0) {\n return this.stack[--this.popIdx];\n }\n },\n reset: function () {\n this.popIdx = 0;\n }\n};\n\nfunction InsertStackElement(node, body) {\n this.node = node; // QuadTree node\n this.body = body; // physical body which needs to be inserted to node\n}\n","module.exports = function isSamePosition(point1, point2) {\n var dx = Math.abs(point1.x - point2.x);\n var dy = Math.abs(point1.y - point2.y);\n\n return (dx < 1e-8 && dy < 1e-8);\n};\n","/**\n * Internal data structure to represent 2D QuadTree node\n */\nmodule.exports = function Node() {\n // body stored inside this node. In quad tree only leaf nodes (by construction)\n // contain boides:\n this.body = null;\n\n // Child nodes are stored in quads. Each quad is presented by number:\n // 0 | 1\n // -----\n // 2 | 3\n this.quad0 = null;\n this.quad1 = null;\n this.quad2 = null;\n this.quad3 = null;\n\n // Total mass of current node\n this.mass = 0;\n\n // Center of mass coordinates\n this.massX = 0;\n this.massY = 0;\n\n // bounding box coordinates\n this.left = 0;\n this.top = 0;\n this.bottom = 0;\n this.right = 0;\n};\n","module.exports = {\n random: random,\n randomIterator: randomIterator\n};\n\n/**\n * Creates seeded PRNG with two methods:\n * next() and nextDouble()\n */\nfunction random(inputSeed) {\n var seed = typeof inputSeed === 'number' ? inputSeed : (+ new Date());\n var randomFunc = function() {\n // Robert Jenkins' 32 bit integer hash function.\n seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;\n seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;\n seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;\n seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;\n seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;\n seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;\n return (seed & 0xfffffff) / 0x10000000;\n };\n\n return {\n /**\n * Generates random integer number in the range from 0 (inclusive) to maxValue (exclusive)\n *\n * @param maxValue Number REQUIRED. Ommitting this number will result in NaN values from PRNG.\n */\n next : function (maxValue) {\n return Math.floor(randomFunc() * maxValue);\n },\n\n /**\n * Generates random double number in the range from 0 (inclusive) to 1 (exclusive)\n * This function is the same as Math.random() (except that it could be seeded)\n */\n nextDouble : function () {\n return randomFunc();\n }\n };\n}\n\n/*\n * Creates iterator over array, which returns items of array in random order\n * Time complexity is guaranteed to be O(n);\n */\nfunction randomIterator(array, customRandom) {\n var localRandom = customRandom || random();\n if (typeof localRandom.next !== 'function') {\n throw new Error('customRandom does not match expected API: next() function is missing');\n }\n\n return {\n forEach : function (callback) {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n\n callback(t);\n }\n\n if (array.length) {\n callback(array[0]);\n }\n },\n\n /**\n * Shuffles array randomly, in place.\n */\n shuffle : function () {\n var i, j, t;\n for (i = array.length - 1; i > 0; --i) {\n j = localRandom.next(i + 1); // i inclusive\n t = array[j];\n array[j] = array[i];\n array[i] = t;\n }\n\n return array;\n }\n };\n}\n","module.exports = save;\n\nfunction save(graph, customNodeTransform, customLinkTransform) {\n // Object contains `nodes` and `links` arrays.\n var result = {\n nodes: [],\n links: []\n };\n\n var nodeTransform = customNodeTransform || defaultTransformForNode;\n var linkTransform = customLinkTransform || defaultTransformForLink;\n\n graph.forEachNode(saveNode);\n graph.forEachLink(saveLink);\n\n return JSON.stringify(result);\n\n function saveNode(node) {\n // Each node of the graph is processed to take only required fields\n // `id` and `data`\n result.nodes.push(nodeTransform(node));\n }\n\n function saveLink(link) {\n // Each link of the graph is also processed to take `fromId`, `toId` and\n // `data`\n result.links.push(linkTransform(link));\n }\n\n function defaultTransformForNode(node) {\n var result = {\n id: node.id\n };\n // We don't want to store undefined fields when it's not necessary:\n if (node.data !== undefined) {\n result.data = node.data;\n }\n\n return result;\n }\n\n function defaultTransformForLink(link) {\n var result = {\n fromId: link.fromId,\n toId: link.toId,\n };\n\n if (link.data !== undefined) {\n result.data = link.data;\n }\n\n return result;\n }\n}\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","module.exports = svg;\n\nsvg.compile = require('./lib/compile');\n\nvar compileTemplate = svg.compileTemplate = require('./lib/compile_template');\n\nvar domEvents = require('add-event-listener');\n\nvar svgns = \"http://www.w3.org/2000/svg\";\nvar xlinkns = \"http://www.w3.org/1999/xlink\";\n\nfunction svg(element, attrBag) {\n var svgElement = augment(element);\n if (attrBag === undefined) {\n return svgElement;\n }\n\n var attributes = Object.keys(attrBag);\n for (var i = 0; i < attributes.length; ++i) {\n var attributeName = attributes[i];\n var value = attrBag[attributeName];\n if (attributeName === 'link') {\n svgElement.link(value);\n } else {\n svgElement.attr(attributeName, value);\n }\n }\n\n return svgElement;\n}\n\nfunction augment(element) {\n var svgElement = element;\n\n if (typeof element === \"string\") {\n svgElement = window.document.createElementNS(svgns, element);\n } else if (element.simplesvg) {\n return element;\n }\n\n var compiledTempalte;\n\n svgElement.simplesvg = true; // this is not good, since we are monkey patching svg\n svgElement.attr = attr;\n svgElement.append = append;\n svgElement.link = link;\n svgElement.text = text;\n\n // add easy eventing\n svgElement.on = on;\n svgElement.off = off;\n\n // data binding:\n svgElement.dataSource = dataSource;\n\n return svgElement;\n\n function dataSource(model) {\n if (!compiledTempalte) compiledTempalte = compileTemplate(svgElement);\n compiledTempalte.link(model);\n return svgElement;\n }\n\n function on(name, cb, useCapture) {\n domEvents.addEventListener(svgElement, name, cb, useCapture);\n return svgElement;\n }\n\n function off(name, cb, useCapture) {\n domEvents.removeEventListener(svgElement, name, cb, useCapture);\n return svgElement;\n }\n\n function append(content) {\n var child = svg(content);\n svgElement.appendChild(child);\n\n return child;\n }\n\n function attr(name, value) {\n if (arguments.length === 2) {\n if (value !== null) {\n svgElement.setAttributeNS(null, name, value);\n } else {\n svgElement.removeAttributeNS(null, name);\n }\n\n return svgElement;\n }\n\n return svgElement.getAttributeNS(null, name);\n }\n\n function link(target) {\n if (arguments.length) {\n svgElement.setAttributeNS(xlinkns, \"xlink:href\", target);\n return svgElement;\n }\n\n return svgElement.getAttributeNS(xlinkns, \"xlink:href\");\n }\n\n function text(textContent) {\n if (textContent !== undefined) {\n svgElement.textContent = textContent;\n return svgElement;\n }\n return svgElement.textContent;\n }\n}\n","var parser = require('./domparser.js');\nvar svg = require('../');\n\nmodule.exports = compile;\n\nfunction compile(svgText) {\n try {\n svgText = addNamespaces(svgText);\n return svg(parser.parseFromString(svgText, \"text/xml\").documentElement);\n } catch (e) {\n throw e;\n }\n}\n\nfunction addNamespaces(text) {\n if (!text) return;\n\n var namespaces = 'xmlns:svg=\"http://www.w3.org/2000/svg\" xmlns=\"http://www.w3.org/2000/svg\"';\n var match = text.match(/^<\\w+/);\n if (match) {\n var tagLength = match[0].length;\n return text.substr(0, tagLength) + ' ' + namespaces + ' ' + text.substr(tagLength);\n } else {\n throw new Error('Cannot parse input text: invalid xml?');\n }\n}\n","module.exports = template;\n\nvar BINDING_EXPR = /{{(.+?)}}/;\n\nfunction template(domNode) {\n var allBindings = Object.create(null);\n extractAllBindings(domNode, allBindings);\n\n return {\n link: function(model) {\n Object.keys(allBindings).forEach(function(key) {\n var setter = allBindings[key];\n setter.forEach(changeModel);\n });\n\n function changeModel(setter) {\n setter(model);\n }\n }\n };\n}\n\nfunction extractAllBindings(domNode, allBindings) {\n var nodeType = domNode.nodeType;\n var typeSupported = (nodeType === 1) || (nodeType === 3);\n if (!typeSupported) return;\n var i;\n if (domNode.hasChildNodes()) {\n var domChildren = domNode.childNodes;\n for (i = 0; i < domChildren.length; ++i) {\n extractAllBindings(domChildren[i], allBindings);\n }\n }\n\n if (nodeType === 3) { // text:\n bindTextContent(domNode, allBindings);\n }\n\n if (!domNode.attributes) return; // this might be a text. Need to figure out what to do in that case\n\n var attrs = domNode.attributes;\n for (i = 0; i < attrs.length; ++i) {\n bindDomAttribute(attrs[i], domNode, allBindings);\n }\n}\n\nfunction bindDomAttribute(domAttribute, element, allBindings) {\n var value = domAttribute.value;\n if (!value) return; // unary attribute?\n\n var modelNameMatch = value.match(BINDING_EXPR);\n if (!modelNameMatch) return; // does not look like a binding\n\n var attrName = domAttribute.localName;\n var modelPropertyName = modelNameMatch[1];\n var isSimpleValue = modelPropertyName.indexOf('.') < 0;\n\n if (!isSimpleValue) throw new Error('simplesvg currently does not support nested bindings');\n\n var propertyBindings = allBindings[modelPropertyName];\n if (!propertyBindings) {\n propertyBindings = allBindings[modelPropertyName] = [attributeSetter];\n } else {\n propertyBindings.push(attributeSetter);\n }\n\n function attributeSetter(model) {\n element.setAttributeNS(null, attrName, model[modelPropertyName]);\n }\n}\nfunction bindTextContent(element, allBindings) {\n // todo reduce duplication\n var value = element.nodeValue;\n if (!value) return; // unary attribute?\n\n var modelNameMatch = value.match(BINDING_EXPR);\n if (!modelNameMatch) return; // does not look like a binding\n\n var modelPropertyName = modelNameMatch[1];\n var isSimpleValue = modelPropertyName.indexOf('.') < 0;\n\n var propertyBindings = allBindings[modelPropertyName];\n if (!propertyBindings) {\n propertyBindings = allBindings[modelPropertyName] = [textSetter];\n } else {\n propertyBindings.push(textSetter);\n }\n\n function textSetter(model) {\n element.nodeValue = model[modelPropertyName];\n }\n}\n","module.exports = createDomparser();\n\nfunction createDomparser() {\n if (typeof DOMParser === 'undefined') {\n return {\n parseFromString: fail\n };\n }\n return new DOMParser();\n}\n\nfunction fail() {\n throw new Error('DOMParser is not supported by this platform. Please open issue here https://github.com/anvaka/simplesvg');\n}\n","var centrality = require('ngraph.centrality');\n\nmodule.exports = centralityWrapper;\n\nfunction centralityWrapper() {\n // TODO: This should not be a function\n return {\n betweennessCentrality: betweennessCentrality,\n degreeCentrality: degreeCentrality\n };\n}\n\nfunction betweennessCentrality(g) {\n var betweenness = centrality.betweenness(g);\n return toVivaGraphCentralityFormat(betweenness);\n}\n\nfunction degreeCentrality(g, kind) {\n var degree = centrality.degree(g, kind);\n return toVivaGraphCentralityFormat(degree);\n}\n\nfunction toVivaGraphCentralityFormat(centrality) {\n return Object.keys(centrality).sort(byValue).map(toKeyValue);\n\n function byValue(x, y) {\n return centrality[y] - centrality[x];\n }\n\n function toKeyValue(key) {\n return {\n key: key,\n value: centrality[key]\n };\n }\n}\n","/**\r\n * @fileOverview Contains collection of primitive operations under graph.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\nmodule.exports = operations;\r\n\r\nfunction operations() {\r\n\r\n return {\r\n /**\r\n * Gets graph density, which is a ratio of actual number of edges to maximum\r\n * number of edges. I.e. graph density 1 means all nodes are connected with each other with an edge.\r\n * Density 0 - graph has no edges. Runtime: O(1)\r\n * \r\n * @param graph represents oriented graph structure.\r\n * @param directed (optional boolean) represents if the graph should be treated as a directed graph.\r\n * \r\n * @returns density of the graph if graph has nodes. NaN otherwise. Returns density for undirected graph by default but returns density for directed graph if a boolean 'true' is passed along with the graph.\r\n */\r\n density : function (graph,directed) {\r\n var nodes = graph.getNodesCount();\r\n if (nodes === 0) {\r\n return NaN;\r\n }\r\n if(directed){\r\n return graph.getLinksCount() / (nodes * (nodes - 1));\r\n } else {\r\n return 2 * graph.getLinksCount() / (nodes * (nodes - 1));\r\n }\r\n }\r\n };\r\n};\r\n","/**\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = domInputManager;\n\nvar dragndrop = require('./dragndrop.js');\n\nfunction domInputManager(graph, graphics) {\n var nodeEvents = {};\n return {\n /**\n * Called by renderer to listen to drag-n-drop events from node. E.g. for SVG\n * graphics we may listen to DOM events, whereas for WebGL the graphics\n * should provide custom eventing mechanism.\n *\n * @param node - to be monitored.\n * @param handlers - object with set of three callbacks:\n * onStart: function(),\n * onDrag: function(e, offset),\n * onStop: function()\n */\n bindDragNDrop: bindDragNDrop\n };\n\n function bindDragNDrop(node, handlers) {\n var events;\n if (handlers) {\n var nodeUI = graphics.getNodeUI(node.id);\n events = dragndrop(nodeUI);\n if (typeof handlers.onStart === 'function') {\n events.onStart(handlers.onStart);\n }\n if (typeof handlers.onDrag === 'function') {\n events.onDrag(handlers.onDrag);\n }\n if (typeof handlers.onStop === 'function') {\n events.onStop(handlers.onStop);\n }\n\n nodeEvents[node.id] = events;\n } else if ((events = nodeEvents[node.id])) {\n events.release();\n delete nodeEvents[node.id];\n }\n }\n}\n","/**\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = dragndrop;\n\nvar documentEvents = require('../Utils/documentEvents.js');\nvar browserInfo = require('../Utils/browserInfo.js');\nvar findElementPosition = require('../Utils/findElementPosition.js');\n\n// TODO: Move to input namespace\n// TODO: Methods should be extracted into the prototype. This class\n// does not need to consume so much memory for every tracked element\nfunction dragndrop(element) {\n var start,\n drag,\n end,\n scroll,\n prevSelectStart,\n prevDragStart,\n\n startX = 0,\n startY = 0,\n dragObject,\n touchInProgress = false,\n pinchZoomLength = 0,\n\n getMousePos = function (e) {\n var posx = 0,\n posy = 0;\n\n e = e || window.event;\n\n if (e.pageX || e.pageY) {\n posx = e.pageX;\n posy = e.pageY;\n } else if (e.clientX || e.clientY) {\n posx = e.clientX + window.document.body.scrollLeft + window.document.documentElement.scrollLeft;\n posy = e.clientY + window.document.body.scrollTop + window.document.documentElement.scrollTop;\n }\n\n return [posx, posy];\n },\n\n move = function (e, clientX, clientY) {\n if (drag) {\n drag(e, {x : clientX - startX, y : clientY - startY });\n }\n\n startX = clientX;\n startY = clientY;\n },\n\n stopPropagation = function (e) {\n if (e.stopPropagation) { e.stopPropagation(); } else { e.cancelBubble = true; }\n },\n preventDefault = function (e) {\n if (e.preventDefault) { e.preventDefault(); }\n },\n\n handleDisabledEvent = function (e) {\n stopPropagation(e);\n return false;\n },\n\n handleMouseMove = function (e) {\n e = e || window.event;\n\n move(e, e.clientX, e.clientY);\n },\n\n handleMouseDown = function (e) {\n e = e || window.event;\n if (touchInProgress) {\n // modern browsers will fire mousedown for touch events too\n // we do not want this, since touch is handled separately.\n stopPropagation(e);\n return false;\n }\n // for IE, left click == 1\n // for Firefox, left click == 0\n var isLeftButton = ((e.button === 1 && window.event !== null) || e.button === 0);\n\n if (isLeftButton) {\n startX = e.clientX;\n startY = e.clientY;\n\n // TODO: bump zIndex?\n dragObject = e.target || e.srcElement;\n\n if (start) { start(e, {x: startX, y : startY}); }\n\n documentEvents.on('mousemove', handleMouseMove);\n documentEvents.on('mouseup', handleMouseUp);\n\n\n stopPropagation(e);\n // TODO: What if event already there? Not bullet proof:\n prevSelectStart = window.document.onselectstart;\n prevDragStart = window.document.ondragstart;\n\n window.document.onselectstart = handleDisabledEvent;\n dragObject.ondragstart = handleDisabledEvent;\n\n // prevent text selection (except IE)\n return false;\n }\n },\n\n handleMouseUp = function (e) {\n e = e || window.event;\n\n documentEvents.off('mousemove', handleMouseMove);\n documentEvents.off('mouseup', handleMouseUp);\n\n window.document.onselectstart = prevSelectStart;\n dragObject.ondragstart = prevDragStart;\n dragObject = null;\n if (end) { end(e); }\n },\n\n handleMouseWheel = function (e) {\n if (typeof scroll !== 'function') {\n return;\n }\n\n e = e || window.event;\n if (e.preventDefault) {\n e.preventDefault();\n }\n\n e.returnValue = false;\n var delta,\n mousePos = getMousePos(e),\n elementOffset = findElementPosition(element),\n relMousePos = {\n x: mousePos[0] - elementOffset[0],\n y: mousePos[1] - elementOffset[1]\n };\n\n if (e.wheelDelta) {\n delta = e.wheelDelta / 360; // Chrome/Safari\n } else {\n delta = e.detail / -9; // Mozilla\n }\n\n scroll(e, delta, relMousePos);\n },\n\n updateScrollEvents = function (scrollCallback) {\n if (!scroll && scrollCallback) {\n // client is interested in scrolling. Start listening to events:\n if (browserInfo.browser === 'webkit') {\n element.addEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari\n } else {\n element.addEventListener('DOMMouseScroll', handleMouseWheel, false); // Others\n }\n } else if (scroll && !scrollCallback) {\n if (browserInfo.browser === 'webkit') {\n element.removeEventListener('mousewheel', handleMouseWheel, false); // Chrome/Safari\n } else {\n element.removeEventListener('DOMMouseScroll', handleMouseWheel, false); // Others\n }\n }\n\n scroll = scrollCallback;\n },\n\n getPinchZoomLength = function(finger1, finger2) {\n return (finger1.clientX - finger2.clientX) * (finger1.clientX - finger2.clientX) +\n (finger1.clientY - finger2.clientY) * (finger1.clientY - finger2.clientY);\n },\n\n handleTouchMove = function (e) {\n if (e.touches.length === 1) {\n stopPropagation(e);\n\n var touch = e.touches[0];\n move(e, touch.clientX, touch.clientY);\n } else if (e.touches.length === 2) {\n // it's a zoom:\n var currentPinchLength = getPinchZoomLength(e.touches[0], e.touches[1]);\n var delta = 0;\n if (currentPinchLength < pinchZoomLength) {\n delta = -1;\n } else if (currentPinchLength > pinchZoomLength) {\n delta = 1;\n }\n scroll(e, delta, {x: e.touches[0].clientX, y: e.touches[0].clientY});\n pinchZoomLength = currentPinchLength;\n stopPropagation(e);\n preventDefault(e);\n }\n },\n\n handleTouchEnd = function (e) {\n touchInProgress = false;\n documentEvents.off('touchmove', handleTouchMove);\n documentEvents.off('touchend', handleTouchEnd);\n documentEvents.off('touchcancel', handleTouchEnd);\n dragObject = null;\n if (end) { end(e); }\n },\n\n handleSignleFingerTouch = function (e, touch) {\n stopPropagation(e);\n preventDefault(e);\n\n startX = touch.clientX;\n startY = touch.clientY;\n\n dragObject = e.target || e.srcElement;\n\n if (start) { start(e, {x: startX, y : startY}); }\n // TODO: can I enter into the state when touch is in progress\n // but it's still a single finger touch?\n if (!touchInProgress) {\n touchInProgress = true;\n documentEvents.on('touchmove', handleTouchMove);\n documentEvents.on('touchend', handleTouchEnd);\n documentEvents.on('touchcancel', handleTouchEnd);\n }\n },\n\n handleTouchStart = function (e) {\n if (e.touches.length === 1) {\n return handleSignleFingerTouch(e, e.touches[0]);\n } else if (e.touches.length === 2) {\n // handleTouchMove() will care about pinch zoom.\n stopPropagation(e);\n preventDefault(e);\n\n pinchZoomLength = getPinchZoomLength(e.touches[0], e.touches[1]);\n\n }\n // don't care about the rest.\n };\n\n\n element.addEventListener('mousedown', handleMouseDown);\n element.addEventListener('touchstart', handleTouchStart);\n\n return {\n onStart : function (callback) {\n start = callback;\n return this;\n },\n\n onDrag : function (callback) {\n drag = callback;\n return this;\n },\n\n onStop : function (callback) {\n end = callback;\n return this;\n },\n\n /**\n * Occurs when mouse wheel event happens. callback = function(e, scrollDelta, scrollPoint);\n */\n onScroll : function (callback) {\n updateScrollEvents(callback);\n return this;\n },\n\n release : function () {\n // TODO: could be unsafe. We might wanna release dragObject, etc.\n element.removeEventListener('mousedown', handleMouseDown);\n element.removeEventListener('touchstart', handleTouchStart);\n\n documentEvents.off('mousemove', handleMouseMove);\n documentEvents.off('mouseup', handleMouseUp);\n documentEvents.off('touchmove', handleTouchMove);\n documentEvents.off('touchend', handleTouchEnd);\n documentEvents.off('touchcancel', handleTouchEnd);\n\n updateScrollEvents(null);\n }\n };\n}\n","/**\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = webglInputManager;\n\nvar createInputEvents = require('../WebGL/webglInputEvents.js');\n\nfunction webglInputManager(graph, graphics) {\n var inputEvents = createInputEvents(graphics),\n draggedNode = null,\n internalHandlers = {},\n pos = {x : 0, y : 0};\n\n inputEvents.mouseDown(function (node, e) {\n draggedNode = node;\n pos.x = e.clientX;\n pos.y = e.clientY;\n\n inputEvents.mouseCapture(draggedNode);\n\n var handlers = internalHandlers[node.id];\n if (handlers && handlers.onStart) {\n handlers.onStart(e, pos);\n }\n\n return true;\n }).mouseUp(function (node) {\n inputEvents.releaseMouseCapture(draggedNode);\n\n draggedNode = null;\n var handlers = internalHandlers[node.id];\n if (handlers && handlers.onStop) {\n handlers.onStop();\n }\n return true;\n }).mouseMove(function (node, e) {\n if (draggedNode) {\n var handlers = internalHandlers[draggedNode.id];\n if (handlers && handlers.onDrag) {\n handlers.onDrag(e, {x : e.clientX - pos.x, y : e.clientY - pos.y });\n }\n\n pos.x = e.clientX;\n pos.y = e.clientY;\n return true;\n }\n });\n\n return {\n /**\n * Called by renderer to listen to drag-n-drop events from node. E.g. for SVG\n * graphics we may listen to DOM events, whereas for WebGL we graphics\n * should provide custom eventing mechanism.\n *\n * @param node - to be monitored.\n * @param handlers - object with set of three callbacks:\n * onStart: function(),\n * onDrag: function(e, offset),\n * onStop: function()\n */\n bindDragNDrop : function (node, handlers) {\n internalHandlers[node.id] = handlers;\n if (!handlers) {\n delete internalHandlers[node.id];\n }\n }\n };\n}\n","module.exports = constant;\n\nvar merge = require('ngraph.merge');\nvar random = require('ngraph.random').random;\nvar Rect = require('../Utils/rect.js');\n\n/**\n * Does not really perform any layouting algorithm but is compliant\n * with renderer interface. Allowing clients to provide specific positioning\n * callback and get static layout of the graph\n *\n * @param {Viva.Graph.graph} graph to layout\n * @param {Object} userSettings\n */\nfunction constant(graph, userSettings) {\n userSettings = merge(userSettings, {\n maxX : 1024,\n maxY : 1024,\n seed : 'Deterministic randomness made me do this'\n });\n // This class simply follows API, it does not use some of the arguments:\n /*jshint unused: false */\n var rand = random(userSettings.seed),\n graphRect = new Rect(Number.MAX_VALUE, Number.MAX_VALUE, Number.MIN_VALUE, Number.MIN_VALUE),\n layoutLinks = {},\n\n placeNodeCallback = function (node) {\n return {\n x: rand.next(userSettings.maxX),\n y: rand.next(userSettings.maxY)\n };\n },\n\n updateGraphRect = function (position, graphRect) {\n if (position.x < graphRect.x1) { graphRect.x1 = position.x; }\n if (position.x > graphRect.x2) { graphRect.x2 = position.x; }\n if (position.y < graphRect.y1) { graphRect.y1 = position.y; }\n if (position.y > graphRect.y2) { graphRect.y2 = position.y; }\n },\n\n layoutNodes = typeof Object.create === 'function' ? Object.create(null) : {},\n\n ensureNodeInitialized = function (node) {\n layoutNodes[node.id] = placeNodeCallback(node);\n updateGraphRect(layoutNodes[node.id], graphRect);\n },\n\n updateNodePositions = function () {\n if (graph.getNodesCount() === 0) { return; }\n\n graphRect.x1 = Number.MAX_VALUE;\n graphRect.y1 = Number.MAX_VALUE;\n graphRect.x2 = Number.MIN_VALUE;\n graphRect.y2 = Number.MIN_VALUE;\n\n graph.forEachNode(ensureNodeInitialized);\n },\n\n ensureLinkInitialized = function (link) {\n layoutLinks[link.id] = link;\n },\n\n onGraphChanged = function(changes) {\n for (var i = 0; i < changes.length; ++i) {\n var change = changes[i];\n if (change.node) {\n if (change.changeType === 'add') {\n ensureNodeInitialized(change.node);\n } else {\n delete layoutNodes[change.node.id];\n }\n } if (change.link) {\n if (change.changeType === 'add') {\n ensureLinkInitialized(change.link);\n } else {\n delete layoutLinks[change.link.id];\n }\n }\n }\n };\n\n graph.forEachNode(ensureNodeInitialized);\n graph.forEachLink(ensureLinkInitialized);\n graph.on('changed', onGraphChanged);\n\n return {\n /**\n * Attempts to layout graph within given number of iterations.\n *\n * @param {integer} [iterationsCount] number of algorithm's iterations.\n * The constant layout ignores this parameter.\n */\n run : function (iterationsCount) {\n this.step();\n },\n\n /**\n * One step of layout algorithm.\n */\n step : function () {\n updateNodePositions();\n\n return true; // no need to continue.\n },\n\n /**\n * Returns rectangle structure {x1, y1, x2, y2}, which represents\n * current space occupied by graph.\n */\n getGraphRect : function () {\n return graphRect;\n },\n\n /**\n * Request to release all resources\n */\n dispose : function () {\n graph.off('change', onGraphChanged);\n },\n\n /*\n * Checks whether given node is pinned; all nodes in this layout are pinned.\n */\n isNodePinned: function (node) {\n return true;\n },\n\n /*\n * Requests layout algorithm to pin/unpin node to its current position\n * Pinned nodes should not be affected by layout algorithm and always\n * remain at their position\n */\n pinNode: function (node, isPinned) {\n // noop\n },\n\n /*\n * Gets position of a node by its id. If node was not seen by this\n * layout algorithm undefined value is returned;\n */\n getNodePosition: getNodePosition,\n\n /**\n * Returns {from, to} position of a link.\n */\n getLinkPosition: function (linkId) {\n var link = layoutLinks[linkId];\n return {\n from : getNodePosition(link.fromId),\n to : getNodePosition(link.toId)\n };\n },\n\n /**\n * Sets position of a node to a given coordinates\n */\n setNodePosition: function (nodeId, x, y) {\n var pos = layoutNodes[nodeId];\n if (pos) {\n pos.x = x;\n pos.y = y;\n }\n },\n\n // Layout specific methods:\n\n /**\n * Based on argument either update default node placement callback or\n * attempts to place given node using current placement callback.\n * Setting new node callback triggers position update for all nodes.\n *\n * @param {Object} newPlaceNodeCallbackOrNode - if it is a function then\n * default node placement callback is replaced with new one. Node placement\n * callback has a form of function (node) {}, and is expected to return an\n * object with x and y properties set to numbers.\n *\n * Otherwise if it's not a function the argument is treated as graph node\n * and current node placement callback will be used to place it.\n */\n placeNode : function (newPlaceNodeCallbackOrNode) {\n if (typeof newPlaceNodeCallbackOrNode === 'function') {\n placeNodeCallback = newPlaceNodeCallbackOrNode;\n updateNodePositions();\n return this;\n }\n\n // it is not a request to update placeNodeCallback, trying to place\n // a node using current callback:\n return placeNodeCallback(newPlaceNodeCallbackOrNode);\n }\n\n };\n\n function getNodePosition(nodeId) {\n return layoutNodes[nodeId];\n }\n}\n","/**\n * This module provides compatibility layer with 0.6.x library. It will be\n * removed in the next version\n */\n\nvar events = require('ngraph.events');\n\nmodule.exports = backwardCompatibleEvents;\n\nfunction backwardCompatibleEvents(g) {\n console.log(\"This method is deprecated. Please use Viva.events() instead\");\n\n if (!g) {\n return g;\n }\n\n var eventsDefined = (g.on !== undefined) ||\n (g.off !== undefined) ||\n (g.fire !== undefined);\n\n if (eventsDefined) {\n // events already defined, ignore\n return {\n extend: function() {\n return g;\n },\n on: g.on,\n stop: g.off\n };\n }\n\n return {\n extend: extend,\n on: g.on,\n stop: g.off\n };\n\n function extend() {\n var backwardCompatible = events(g);\n backwardCompatible.addEventListener = backwardCompatible.on;\n return backwardCompatible;\n }\n}\n","module.exports = browserInfo();\r\n\r\nfunction browserInfo() {\r\n if (typeof window === \"undefined\" || !window.hasOwnProperty(\"navigator\")) {\r\n return {\r\n browser : \"\",\r\n version : \"0\"\r\n };\r\n }\r\n\r\n var ua = window.navigator.userAgent.toLowerCase(),\r\n // Useragent RegExp\r\n rwebkit = /(webkit)[ \\/]([\\w.]+)/,\r\n ropera = /(opera)(?:.*version)?[ \\/]([\\w.]+)/,\r\n rmsie = /(msie) ([\\w.]+)/,\r\n rmozilla = /(mozilla)(?:.*? rv:([\\w.]+))?/,\r\n match = rwebkit.exec(ua) ||\r\n ropera.exec(ua) ||\r\n rmsie.exec(ua) ||\r\n (ua.indexOf(\"compatible\") < 0 && rmozilla.exec(ua)) ||\r\n [];\r\n\r\n return {\r\n browser: match[1] || \"\",\r\n version: match[2] || \"0\"\r\n };\r\n}\r\n","var nullEvents = require('./nullEvents.js');\n\nmodule.exports = createDocumentEvents();\n\nfunction createDocumentEvents() {\n if (typeof document === undefined) {\n return nullEvents;\n }\n\n return {\n on: on,\n off: off\n };\n}\n\nfunction on(eventName, handler) {\n document.addEventListener(eventName, handler);\n}\n\nfunction off(eventName, handler) {\n document.removeEventListener(eventName, handler);\n}\n","/**\n * Finds the absolute position of an element on a page\n */\nmodule.exports = findElementPosition;\n\nfunction findElementPosition(obj) {\n var curleft = 0,\n curtop = 0;\n if (obj.offsetParent) {\n do {\n curleft += obj.offsetLeft;\n curtop += obj.offsetTop;\n } while ((obj = obj.offsetParent) !== null);\n }\n\n return [curleft, curtop];\n}\n","module.exports = getDimension;\r\n\r\nfunction getDimension(container) {\r\n if (!container) {\r\n throw {\r\n message : 'Cannot get dimensions of undefined container'\r\n };\r\n }\r\n\r\n // TODO: Potential cross browser bug.\r\n var width = container.clientWidth;\r\n var height = container.clientHeight;\r\n\r\n return {\r\n left : 0,\r\n top : 0,\r\n width : width,\r\n height : height\r\n };\r\n}\r\n","var intersect = require('gintersect');\n\nmodule.exports = intersectRect;\n\nfunction intersectRect(left, top, right, bottom, x1, y1, x2, y2) {\n return intersect(left, top, left, bottom, x1, y1, x2, y2) ||\n intersect(left, bottom, right, bottom, x1, y1, x2, y2) ||\n intersect(right, bottom, right, top, x1, y1, x2, y2) ||\n intersect(right, top, left, top, x1, y1, x2, y2);\n}\n","module.exports = createNullEvents();\n\nfunction createNullEvents() {\n return {\n on: noop,\n off: noop,\n stop: noop\n };\n}\n\nfunction noop() { }\n","module.exports = Rect;\n\n/**\n * Very generic rectangle.\n */\nfunction Rect (x1, y1, x2, y2) {\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n}\n","/**\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = createTimer();\r\n\r\nfunction createTimer() {\r\n var lastTime = 0,\r\n vendors = ['ms', 'moz', 'webkit', 'o'],\r\n i,\r\n scope;\r\n\r\n if (typeof window !== 'undefined') {\r\n scope = window;\r\n } else if (typeof global !== 'undefined') {\r\n scope = global;\r\n } else {\r\n scope = {\r\n setTimeout: noop,\r\n clearTimeout: noop\r\n };\r\n }\r\n\r\n for (i = 0; i < vendors.length && !scope.requestAnimationFrame; ++i) {\r\n var vendorPrefix = vendors[i];\r\n scope.requestAnimationFrame = scope[vendorPrefix + 'RequestAnimationFrame'];\r\n scope.cancelAnimationFrame =\r\n scope[vendorPrefix + 'CancelAnimationFrame'] || scope[vendorPrefix + 'CancelRequestAnimationFrame'];\r\n }\r\n\r\n if (!scope.requestAnimationFrame) {\r\n scope.requestAnimationFrame = rafPolyfill;\r\n }\r\n\r\n if (!scope.cancelAnimationFrame) {\r\n scope.cancelAnimationFrame = cancelRafPolyfill;\r\n }\r\n\r\n return timer;\r\n\r\n /**\r\n * Timer that fires callback with given interval (in ms) until\r\n * callback returns true;\r\n */\r\n function timer(callback) {\r\n var intervalId;\r\n startTimer(); // start it right away.\r\n\r\n return {\r\n /**\r\n * Stops execution of the callback\r\n */\r\n stop: stopTimer,\r\n\r\n restart: restart\r\n };\r\n\r\n function startTimer() {\r\n intervalId = scope.requestAnimationFrame(startTimer);\r\n if (!callback()) {\r\n stopTimer();\r\n }\r\n }\r\n\r\n function stopTimer() {\r\n scope.cancelAnimationFrame(intervalId);\r\n intervalId = 0;\r\n }\r\n\r\n function restart() {\r\n if (!intervalId) {\r\n startTimer();\r\n }\r\n }\r\n }\r\n\r\n function rafPolyfill(callback) {\r\n var currTime = new Date().getTime();\r\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\r\n var id = scope.setTimeout(function() {\r\n callback(currTime + timeToCall);\r\n }, timeToCall);\r\n lastTime = currTime + timeToCall;\r\n return id;\r\n }\r\n\r\n function cancelRafPolyfill(id) {\r\n scope.clearTimeout(id);\r\n }\r\n}\r\n\r\nfunction noop() {}\r\n","var nullEvents = require('./nullEvents.js');\n\nmodule.exports = createDocumentEvents();\n\nfunction createDocumentEvents() {\n if (typeof window === 'undefined') {\n return nullEvents;\n }\n\n return {\n on: on,\n off: off\n };\n}\n\nfunction on(eventName, handler) {\n window.addEventListener(eventName, handler);\n}\n\nfunction off(eventName, handler) {\n window.removeEventListener(eventName, handler);\n}\n\n","/**\r\n * @fileOverview Defines a graph renderer that uses CSS based drawings.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = renderer;\r\n\r\nvar eventify = require('ngraph.events');\r\nvar forceDirected = require('ngraph.forcelayout');\r\nvar svgGraphics = require('./svgGraphics.js');\r\nvar windowEvents = require('../Utils/windowEvents.js');\r\nvar domInputManager = require('../Input/domInputManager.js');\r\nvar timer = require('../Utils/timer.js');\r\nvar getDimension = require('../Utils/getDimensions.js');\r\nvar dragndrop = require('../Input/dragndrop.js');\r\n\r\n/**\r\n * This is heart of the rendering. Class accepts graph to be rendered and rendering settings.\r\n * It monitors graph changes and depicts them accordingly.\r\n *\r\n * @param graph - Viva.Graph.graph() object to be rendered.\r\n * @param settings - rendering settings, composed from the following parts (with their defaults shown):\r\n * settings = {\r\n * // Represents a module that is capable of displaying graph nodes and links.\r\n * // all graphics has to correspond to defined interface and can be later easily\r\n * // replaced for specific needs (e.g. adding WebGL should be piece of cake as long\r\n * // as WebGL has implemented required interface). See svgGraphics for example.\r\n * graphics : Viva.Graph.View.svgGraphics(),\r\n *\r\n * // Where the renderer should draw graph. Container size matters, because\r\n * // renderer will attempt center graph to that size. Also graphics modules\r\n * // might depend on it.\r\n * container : document.body,\r\n *\r\n * // Defines whether graph can respond to use input\r\n * interactive: true,\r\n *\r\n * // Layout algorithm to be used. The algorithm is expected to comply with defined\r\n * // interface and is expected to be iterative. Renderer will use it then to calculate\r\n * // graph's layout. For examples of the interface refer to Viva.Graph.Layout.forceDirected()\r\n * layout : Viva.Graph.Layout.forceDirected(),\r\n *\r\n * // Directs renderer to display links. Usually rendering links is the slowest part of this\r\n * // library. So if you don't need to display links, consider settings this property to false.\r\n * renderLinks : true,\r\n *\r\n * // Number of layout iterations to run before displaying the graph. The bigger you set this number\r\n * // the closer to ideal position graph will appear first time. But be careful: for large graphs\r\n * // it can freeze the browser.\r\n * prerender : 0\r\n * }\r\n */\r\nfunction renderer(graph, settings) {\r\n // TODO: This class is getting hard to understand. Consider refactoring.\r\n // TODO: I have a technical debt here: fix scaling/recentering! Currently it's a total mess.\r\n var FRAME_INTERVAL = 30;\r\n\r\n settings = settings || {};\r\n\r\n var layout = settings.layout,\r\n graphics = settings.graphics,\r\n container = settings.container,\r\n interactive = settings.interactive !== undefined ? settings.interactive : true,\r\n inputManager,\r\n animationTimer,\r\n rendererInitialized = false,\r\n updateCenterRequired = true,\r\n\r\n isStable = false,\r\n userInteraction = false,\r\n isPaused = false,\r\n\r\n transform = {\r\n offsetX: 0,\r\n offsetY: 0,\r\n scale: 1\r\n },\r\n\r\n publicEvents = eventify({}),\r\n containerDrag;\r\n\r\n return {\r\n /**\r\n * Performs rendering of the graph.\r\n *\r\n * @param iterationsCount if specified renderer will run only given number of iterations\r\n * and then stop. Otherwise graph rendering is performed indefinitely.\r\n *\r\n * Note: if rendering stopped by used started dragging nodes or new nodes were added to the\r\n * graph renderer will give run more iterations to reflect changes.\r\n */\r\n run: function(iterationsCount) {\r\n\r\n if (!rendererInitialized) {\r\n prepareSettings();\r\n prerender();\r\n\r\n initDom();\r\n updateCenter();\r\n listenToEvents();\r\n\r\n rendererInitialized = true;\r\n }\r\n\r\n renderIterations(iterationsCount);\r\n\r\n return this;\r\n },\r\n\r\n reset: function() {\r\n graphics.resetScale();\r\n updateCenter();\r\n transform.scale = 1;\r\n },\r\n\r\n pause: function() {\r\n isPaused = true;\r\n animationTimer.stop();\r\n },\r\n\r\n resume: function() {\r\n isPaused = false;\r\n animationTimer.restart();\r\n },\r\n\r\n rerender: function() {\r\n renderGraph();\r\n return this;\r\n },\r\n\r\n zoomOut: function() {\r\n return scale(true);\r\n },\r\n\r\n zoomIn: function() {\r\n return scale(false);\r\n },\r\n\r\n /**\r\n * Returns current transformation matrix.\r\n */\r\n getTransform: function() {\r\n return transform;\r\n },\r\n\r\n /**\r\n * Centers renderer at x,y graph's coordinates\r\n */\r\n moveTo: function(x, y) {\r\n graphics.graphCenterChanged(transform.offsetX - x * transform.scale, transform.offsetY - y * transform.scale);\r\n renderGraph();\r\n },\r\n\r\n /**\r\n * Gets current graphics object\r\n */\r\n getGraphics: function() {\r\n return graphics;\r\n },\r\n \r\n /**\r\n * Gets current layout.\r\n */\r\n getLayout: function() {\r\n return layout;\r\n },\r\n\r\n /**\r\n * Removes this renderer and deallocates all resources/timers\r\n */\r\n dispose: function() {\r\n stopListenToEvents(); // I quit!\r\n },\r\n\r\n on: function(eventName, callback) {\r\n publicEvents.on(eventName, callback);\r\n return this;\r\n },\r\n\r\n off: function(eventName, callback) {\r\n publicEvents.off(eventName, callback);\r\n return this;\r\n }\r\n };\r\n\r\n /**\r\n * Checks whether given interaction (node/scroll) is enabled\r\n */\r\n function isInteractive(interactionName) {\r\n if (typeof interactive === 'string') {\r\n return interactive.indexOf(interactionName) >= 0;\r\n } else if (typeof interactive === 'boolean') {\r\n return interactive;\r\n }\r\n return true; // default setting\r\n }\r\n\r\n function prepareSettings() {\r\n container = container || window.document.body;\r\n layout = layout || forceDirected(graph, {\r\n springLength: 80,\r\n springCoeff: 0.0002,\r\n });\r\n graphics = graphics || svgGraphics(graph, {\r\n container: container\r\n });\r\n\r\n if (!settings.hasOwnProperty('renderLinks')) {\r\n settings.renderLinks = true;\r\n }\r\n\r\n settings.prerender = settings.prerender || 0;\r\n inputManager = (graphics.inputManager || domInputManager)(graph, graphics);\r\n }\r\n\r\n function renderGraph() {\r\n graphics.beginRender();\r\n\r\n // todo: move this check graphics\r\n if (settings.renderLinks) {\r\n graphics.renderLinks();\r\n }\r\n graphics.renderNodes();\r\n graphics.endRender();\r\n }\r\n\r\n function onRenderFrame() {\r\n isStable = layout.step() && !userInteraction;\r\n renderGraph();\r\n\r\n return !isStable;\r\n }\r\n\r\n function renderIterations(iterationsCount) {\r\n if (animationTimer) {\r\n return;\r\n }\r\n\r\n if (iterationsCount !== undefined) {\r\n animationTimer = timer(function() {\r\n iterationsCount -= 1;\r\n if (iterationsCount < 0) {\r\n var needMoreFrames = false;\r\n return needMoreFrames;\r\n }\r\n\r\n return onRenderFrame();\r\n }, FRAME_INTERVAL);\r\n } else {\r\n animationTimer = timer(onRenderFrame, FRAME_INTERVAL);\r\n }\r\n }\r\n\r\n function resetStable() {\r\n if (isPaused) {\r\n return;\r\n }\r\n\r\n isStable = false;\r\n animationTimer.restart();\r\n }\r\n\r\n function prerender() {\r\n // To get good initial positions for the graph\r\n // perform several prerender steps in background.\r\n if (typeof settings.prerender === 'number' && settings.prerender > 0) {\r\n for (var i = 0; i < settings.prerender; i += 1) {\r\n layout.step();\r\n }\r\n }\r\n }\r\n\r\n function updateCenter() {\r\n var graphRect = layout.getGraphRect(),\r\n containerSize = getDimension(container);\r\n\r\n var cx = (graphRect.x2 + graphRect.x1) / 2;\r\n var cy = (graphRect.y2 + graphRect.y1) / 2;\r\n transform.offsetX = containerSize.width / 2 - (cx * transform.scale - cx);\r\n transform.offsetY = containerSize.height / 2 - (cy * transform.scale - cy);\r\n graphics.graphCenterChanged(transform.offsetX, transform.offsetY);\r\n\r\n updateCenterRequired = false;\r\n }\r\n\r\n function createNodeUi(node) {\r\n var nodePosition = layout.getNodePosition(node.id);\r\n graphics.addNode(node, nodePosition);\r\n }\r\n\r\n function removeNodeUi(node) {\r\n graphics.releaseNode(node);\r\n }\r\n\r\n function createLinkUi(link) {\r\n var linkPosition = layout.getLinkPosition(link.id);\r\n graphics.addLink(link, linkPosition);\r\n }\r\n\r\n function removeLinkUi(link) {\r\n graphics.releaseLink(link);\r\n }\r\n\r\n function listenNodeEvents(node) {\r\n if (!isInteractive('node')) {\r\n return;\r\n }\r\n\r\n var wasPinned = false;\r\n\r\n // TODO: This may not be memory efficient. Consider reusing handlers object.\r\n inputManager.bindDragNDrop(node, {\r\n onStart: function() {\r\n wasPinned = layout.isNodePinned(node);\r\n layout.pinNode(node, true);\r\n userInteraction = true;\r\n resetStable();\r\n },\r\n onDrag: function(e, offset) {\r\n var oldPos = layout.getNodePosition(node.id);\r\n layout.setNodePosition(node.id,\r\n oldPos.x + offset.x / transform.scale,\r\n oldPos.y + offset.y / transform.scale);\r\n\r\n userInteraction = true;\r\n\r\n renderGraph();\r\n },\r\n onStop: function() {\r\n layout.pinNode(node, wasPinned);\r\n userInteraction = false;\r\n }\r\n });\r\n }\r\n\r\n function releaseNodeEvents(node) {\r\n inputManager.bindDragNDrop(node, null);\r\n }\r\n\r\n function initDom() {\r\n graphics.init(container);\r\n\r\n graph.forEachNode(createNodeUi);\r\n\r\n if (settings.renderLinks) {\r\n graph.forEachLink(createLinkUi);\r\n }\r\n }\r\n\r\n function releaseDom() {\r\n graphics.release(container);\r\n }\r\n\r\n function processNodeChange(change) {\r\n var node = change.node;\r\n\r\n if (change.changeType === 'add') {\r\n createNodeUi(node);\r\n listenNodeEvents(node);\r\n if (updateCenterRequired) {\r\n updateCenter();\r\n }\r\n } else if (change.changeType === 'remove') {\r\n releaseNodeEvents(node);\r\n removeNodeUi(node);\r\n if (graph.getNodesCount() === 0) {\r\n updateCenterRequired = true; // Next time when node is added - center the graph.\r\n }\r\n } else if (change.changeType === 'update') {\r\n releaseNodeEvents(node);\r\n removeNodeUi(node);\r\n\r\n createNodeUi(node);\r\n listenNodeEvents(node);\r\n }\r\n }\r\n\r\n function processLinkChange(change) {\r\n var link = change.link;\r\n if (change.changeType === 'add') {\r\n if (settings.renderLinks) {\r\n createLinkUi(link);\r\n }\r\n } else if (change.changeType === 'remove') {\r\n if (settings.renderLinks) {\r\n removeLinkUi(link);\r\n }\r\n } else if (change.changeType === 'update') {\r\n throw 'Update type is not implemented. TODO: Implement me!';\r\n }\r\n }\r\n\r\n function onGraphChanged(changes) {\r\n var i, change;\r\n for (i = 0; i < changes.length; i += 1) {\r\n change = changes[i];\r\n if (change.node) {\r\n processNodeChange(change);\r\n } else if (change.link) {\r\n processLinkChange(change);\r\n }\r\n }\r\n\r\n resetStable();\r\n }\r\n\r\n function onWindowResized() {\r\n updateCenter();\r\n onRenderFrame();\r\n }\r\n\r\n function releaseContainerDragManager() {\r\n if (containerDrag) {\r\n containerDrag.release();\r\n containerDrag = null;\r\n }\r\n }\r\n\r\n function releaseGraphEvents() {\r\n graph.off('changed', onGraphChanged);\r\n }\r\n\r\n function scale(out, scrollPoint) {\r\n if (!scrollPoint) {\r\n var containerSize = getDimension(container);\r\n scrollPoint = {\r\n x: containerSize.width / 2,\r\n y: containerSize.height / 2\r\n };\r\n }\r\n var scaleFactor = Math.pow(1 + 0.4, out ? -0.2 : 0.2);\r\n transform.scale = graphics.scale(scaleFactor, scrollPoint);\r\n\r\n renderGraph();\r\n publicEvents.fire('scale', transform.scale);\r\n\r\n return transform.scale;\r\n }\r\n\r\n function listenToEvents() {\r\n windowEvents.on('resize', onWindowResized);\r\n\r\n releaseContainerDragManager();\r\n if (isInteractive('drag')) {\r\n containerDrag = dragndrop(container);\r\n containerDrag.onDrag(function(e, offset) {\r\n graphics.translateRel(offset.x, offset.y);\r\n\r\n renderGraph();\r\n publicEvents.fire('drag', offset);\r\n });\r\n }\r\n\r\n if (isInteractive('scroll')) {\r\n if (!containerDrag) {\r\n containerDrag = dragndrop(container);\r\n }\r\n containerDrag.onScroll(function(e, scaleOffset, scrollPoint) {\r\n scale(scaleOffset < 0, scrollPoint);\r\n });\r\n }\r\n\r\n graph.forEachNode(listenNodeEvents);\r\n\r\n releaseGraphEvents();\r\n graph.on('changed', onGraphChanged);\r\n }\r\n\r\n function stopListenToEvents() {\r\n rendererInitialized = false;\r\n releaseGraphEvents();\r\n releaseContainerDragManager();\r\n windowEvents.off('resize', onWindowResized);\r\n publicEvents.off();\r\n animationTimer.stop();\r\n\r\n graph.forEachLink(function(link) {\r\n if (settings.renderLinks) {\r\n removeLinkUi(link);\r\n }\r\n });\r\n\r\n graph.forEachNode(function(node) {\r\n releaseNodeEvents(node);\r\n removeNodeUi(node);\r\n });\r\n\r\n layout.dispose();\r\n releaseDom();\r\n }\r\n}\r\n","/**\r\n * @fileOverview Defines a graph renderer that uses SVG based drawings.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = svgGraphics;\r\n\r\nvar svg = require('simplesvg');\r\nvar eventify = require('ngraph.events');\r\nvar domInputManager = require('../Input/domInputManager.js');\r\n\r\n/**\r\n * Performs svg-based graph rendering. This module does not perform\r\n * layout, but only visualizes nodes and edges of the graph.\r\n */\r\nfunction svgGraphics() {\r\n var svgContainer,\r\n svgRoot,\r\n offsetX = 0,\r\n offsetY = 0,\r\n initCallback,\r\n actualScale = 1,\r\n allNodes = {},\r\n allLinks = {},\r\n/*jshint unused: false */\r\n nodeBuilder = function (node) {\r\n return svg(\"rect\")\r\n .attr(\"width\", 10)\r\n .attr(\"height\", 10)\r\n .attr(\"fill\", \"#00a2e8\");\r\n },\r\n\r\n nodePositionCallback = function (nodeUI, pos) {\r\n // TODO: Remove magic 5. It should be half of the width or height of the node.\r\n nodeUI.attr(\"x\", pos.x - 5)\r\n .attr(\"y\", pos.y - 5);\r\n },\r\n\r\n linkBuilder = function (link) {\r\n return svg(\"line\").attr(\"stroke\", \"#999\");\r\n },\r\n\r\n linkPositionCallback = function (linkUI, fromPos, toPos) {\r\n linkUI.attr(\"x1\", fromPos.x)\r\n .attr(\"y1\", fromPos.y)\r\n .attr(\"x2\", toPos.x)\r\n .attr(\"y2\", toPos.y);\r\n },\r\n\r\n fireRescaled = function (graphics) {\r\n // TODO: maybe we shall copy changes?\r\n graphics.fire(\"rescaled\");\r\n },\r\n\r\n cachedPos = {x : 0, y: 0},\r\n cachedFromPos = {x : 0, y: 0},\r\n cachedToPos = {x : 0, y: 0},\r\n\r\n updateTransform = function () {\r\n if (svgContainer) {\r\n var transform = \"matrix(\" + actualScale + \", 0, 0,\" + actualScale + \",\" + offsetX + \",\" + offsetY + \")\";\r\n svgContainer.attr(\"transform\", transform);\r\n }\r\n };\r\n\r\n svgRoot = createSvgRoot();\r\n\r\n var graphics = {\r\n getNodeUI: function (nodeId) {\r\n return allNodes[nodeId];\r\n },\r\n\r\n getLinkUI: function (linkId) {\r\n return allLinks[linkId];\r\n },\r\n\r\n /**\r\n * Sets the callback that creates node representation.\r\n *\r\n * @param builderCallback a callback function that accepts graph node\r\n * as a parameter and must return an element representing this node.\r\n *\r\n * @returns If builderCallbackOrNode is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned\r\n */\r\n node : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n nodeBuilder = builderCallback;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Sets the callback that creates link representation\r\n *\r\n * @param builderCallback a callback function that accepts graph link\r\n * as a parameter and must return an element representing this link.\r\n *\r\n * @returns If builderCallback is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned.\r\n */\r\n link : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n linkBuilder = builderCallback;\r\n return this;\r\n },\r\n\r\n /**\r\n * Allows to override default position setter for the node with a new\r\n * function. newPlaceCallback(nodeUI, position, node) is function which\r\n * is used by updateNodePosition().\r\n */\r\n placeNode : function (newPlaceCallback) {\r\n nodePositionCallback = newPlaceCallback;\r\n return this;\r\n },\r\n\r\n placeLink : function (newPlaceLinkCallback) {\r\n linkPositionCallback = newPlaceLinkCallback;\r\n return this;\r\n },\r\n\r\n /**\r\n * Called every before renderer starts rendering.\r\n */\r\n beginRender : function () {},\r\n\r\n /**\r\n * Called every time when renderer finishes one step of rendering.\r\n */\r\n endRender : function () {},\r\n\r\n /**\r\n * Sets translate operation that should be applied to all nodes and links.\r\n */\r\n graphCenterChanged : function (x, y) {\r\n offsetX = x;\r\n offsetY = y;\r\n updateTransform();\r\n },\r\n\r\n /**\r\n * Default input manager listens to DOM events to process nodes drag-n-drop\r\n */\r\n inputManager : domInputManager,\r\n\r\n translateRel : function (dx, dy) {\r\n var p = svgRoot.createSVGPoint(),\r\n t = svgContainer.getCTM(),\r\n origin = svgRoot.createSVGPoint().matrixTransform(t.inverse());\r\n\r\n p.x = dx;\r\n p.y = dy;\r\n\r\n p = p.matrixTransform(t.inverse());\r\n p.x = (p.x - origin.x) * t.a;\r\n p.y = (p.y - origin.y) * t.d;\r\n\r\n t.e += p.x;\r\n t.f += p.y;\r\n\r\n var transform = \"matrix(\" + t.a + \", 0, 0,\" + t.d + \",\" + t.e + \",\" + t.f + \")\";\r\n svgContainer.attr(\"transform\", transform);\r\n },\r\n\r\n scale : function (scaleFactor, scrollPoint) {\r\n var p = svgRoot.createSVGPoint();\r\n p.x = scrollPoint.x;\r\n p.y = scrollPoint.y;\r\n\r\n p = p.matrixTransform(svgContainer.getCTM().inverse()); // translate to SVG coordinates\r\n\r\n // Compute new scale matrix in current mouse position\r\n var k = svgRoot.createSVGMatrix().translate(p.x, p.y).scale(scaleFactor).translate(-p.x, -p.y),\r\n t = svgContainer.getCTM().multiply(k);\r\n\r\n actualScale = t.a;\r\n offsetX = t.e;\r\n offsetY = t.f;\r\n var transform = \"matrix(\" + t.a + \", 0, 0,\" + t.d + \",\" + t.e + \",\" + t.f + \")\";\r\n svgContainer.attr(\"transform\", transform);\r\n\r\n fireRescaled(this);\r\n return actualScale;\r\n },\r\n\r\n resetScale : function () {\r\n actualScale = 1;\r\n var transform = \"matrix(1, 0, 0, 1, 0, 0)\";\r\n svgContainer.attr(\"transform\", transform);\r\n fireRescaled(this);\r\n return this;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render.\r\n */\r\n init : function (container) {\r\n container.appendChild(svgRoot);\r\n updateTransform();\r\n // Notify the world if someone waited for update. TODO: should send an event\r\n if (typeof initCallback === \"function\") {\r\n initCallback(svgRoot);\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider release occupied resources.\r\n */\r\n release : function (container) {\r\n if (svgRoot && container) {\r\n container.removeChild(svgRoot);\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given link of the graph\r\n *\r\n * @param link - model of a link\r\n */\r\n addLink: function (link, pos) {\r\n var linkUI = linkBuilder(link);\r\n if (!linkUI) { return; }\r\n linkUI.position = pos;\r\n linkUI.link = link;\r\n allLinks[link.id] = linkUI;\r\n if (svgContainer.childElementCount > 0) {\r\n svgContainer.insertBefore(linkUI, svgContainer.firstChild);\r\n } else {\r\n svgContainer.appendChild(linkUI);\r\n }\r\n return linkUI;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove link from rendering surface.\r\n *\r\n * @param linkUI visual representation of the link created by link() execution.\r\n **/\r\n releaseLink : function (link) {\r\n var linkUI = allLinks[link.id];\r\n if (linkUI) {\r\n svgContainer.removeChild(linkUI);\r\n delete allLinks[link.id];\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given node of the graph.\r\n *\r\n * @param nodeUI visual representation of the node created by node() execution.\r\n **/\r\n addNode : function (node, pos) {\r\n var nodeUI = nodeBuilder(node);\r\n if (!nodeUI) {\r\n return;\r\n }\r\n nodeUI.position = pos;\r\n nodeUI.node = node;\r\n allNodes[node.id] = nodeUI;\r\n\r\n svgContainer.appendChild(nodeUI);\r\n\r\n return nodeUI;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove node from rendering surface.\r\n *\r\n * @param node graph's node\r\n **/\r\n releaseNode : function (node) {\r\n var nodeUI = allNodes[node.id];\r\n if (nodeUI) {\r\n svgContainer.removeChild(nodeUI);\r\n delete allNodes[node.id];\r\n }\r\n },\r\n\r\n renderNodes : function () {\r\n for (var key in allNodes) {\r\n if (allNodes.hasOwnProperty(key)) {\r\n var nodeUI = allNodes[key];\r\n cachedPos.x = nodeUI.position.x;\r\n cachedPos.y = nodeUI.position.y;\r\n nodePositionCallback(nodeUI, cachedPos, nodeUI.node);\r\n }\r\n }\r\n },\r\n\r\n renderLinks : function () {\r\n for (var key in allLinks) {\r\n if (allLinks.hasOwnProperty(key)) {\r\n var linkUI = allLinks[key];\r\n cachedFromPos.x = linkUI.position.from.x;\r\n cachedFromPos.y = linkUI.position.from.y;\r\n cachedToPos.x = linkUI.position.to.x;\r\n cachedToPos.y = linkUI.position.to.y;\r\n linkPositionCallback(linkUI, cachedFromPos, cachedToPos, linkUI.link);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Returns root element which hosts graphics.\r\n */\r\n getGraphicsRoot : function (callbackWhenReady) {\r\n // todo: should fire an event, instead of having this context.\r\n if (typeof callbackWhenReady === \"function\") {\r\n if (svgRoot) {\r\n callbackWhenReady(svgRoot);\r\n } else {\r\n initCallback = callbackWhenReady;\r\n }\r\n }\r\n return svgRoot;\r\n },\r\n /**\r\n * Returns root SVG element.\r\n *\r\n * Note: This is internal method specific to this renderer\r\n */\r\n getSvgRoot : function () {\r\n return svgRoot;\r\n }\r\n };\r\n\r\n\r\n // Let graphics fire events before we return it to the caller.\r\n eventify(graphics);\r\n\r\n return graphics;\r\n\r\n function createSvgRoot() {\r\n var svgRoot = svg(\"svg\");\r\n\r\n svgContainer = svg(\"g\")\r\n .attr(\"buffered-rendering\", \"dynamic\");\r\n\r\n svgRoot.appendChild(svgContainer);\r\n return svgRoot;\r\n }\r\n}\r\n","/**\r\n * @fileOverview Defines a graph renderer that uses WebGL based drawings.\r\n *\r\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\r\n */\r\n\r\nmodule.exports = webglGraphics;\r\n\r\nvar webglInputManager = require('../Input/webglInputManager.js');\r\nvar webglLinkProgram = require('../WebGL/webglLinkProgram.js');\r\nvar webglNodeProgram = require('../WebGL/webglNodeProgram.js');\r\nvar webglSquare = require('../WebGL/webglSquare.js');\r\nvar webglLine = require('../WebGL/webglLine.js');\r\nvar eventify = require('ngraph.events');\r\nvar merge = require('ngraph.merge');\r\n\r\n/**\r\n * Performs webgl-based graph rendering. This module does not perform\r\n * layout, but only visualizes nodes and edges of the graph.\r\n *\r\n * @param options - to customize graphics behavior. Currently supported parameter\r\n * enableBlending - true by default, allows to use transparency in node/links colors.\r\n * preserveDrawingBuffer - false by default, tells webgl to preserve drawing buffer.\r\n * See https://www.khronos.org/registry/webgl/specs/1.0/#5.2\r\n */\r\n\r\nfunction webglGraphics(options) {\r\n options = merge(options, {\r\n enableBlending : true,\r\n preserveDrawingBuffer : false,\r\n clearColor: false,\r\n clearColorValue : {\r\n r : 1,\r\n g : 1,\r\n b : 1,\r\n a : 1\r\n }\r\n });\r\n\r\n var container,\r\n graphicsRoot,\r\n gl,\r\n width,\r\n height,\r\n nodesCount = 0,\r\n linksCount = 0,\r\n transform = [\r\n 1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1\r\n ],\r\n userPlaceNodeCallback,\r\n userPlaceLinkCallback,\r\n nodes = [],\r\n links = [],\r\n initCallback,\r\n\r\n allNodes = {},\r\n allLinks = {},\r\n linkProgram = webglLinkProgram(),\r\n nodeProgram = webglNodeProgram(),\r\n/*jshint unused: false */\r\n nodeUIBuilder = function (node) {\r\n return webglSquare(); // Just make a square, using provided gl context (a nodeProgram);\r\n },\r\n\r\n linkUIBuilder = function (link) {\r\n return webglLine(0xb3b3b3ff);\r\n },\r\n/*jshint unused: true */\r\n updateTransformUniform = function () {\r\n linkProgram.updateTransform(transform);\r\n nodeProgram.updateTransform(transform);\r\n },\r\n\r\n resetScaleInternal = function () {\r\n transform = [1, 0, 0, 0,\r\n 0, 1, 0, 0,\r\n 0, 0, 1, 0,\r\n 0, 0, 0, 1];\r\n },\r\n\r\n updateSize = function () {\r\n if (container && graphicsRoot) {\r\n width = graphicsRoot.width = Math.max(container.offsetWidth, 1);\r\n height = graphicsRoot.height = Math.max(container.offsetHeight, 1);\r\n if (gl) { gl.viewport(0, 0, width, height); }\r\n if (linkProgram) { linkProgram.updateSize(width / 2, height / 2); }\r\n if (nodeProgram) { nodeProgram.updateSize(width / 2, height / 2); }\r\n }\r\n },\r\n\r\n fireRescaled = function (graphics) {\r\n graphics.fire(\"rescaled\");\r\n };\r\n\r\n graphicsRoot = window.document.createElement(\"canvas\");\r\n\r\n var graphics = {\r\n getLinkUI: function (linkId) {\r\n return allLinks[linkId];\r\n },\r\n\r\n getNodeUI: function (nodeId) {\r\n return allNodes[nodeId];\r\n },\r\n\r\n /**\r\n * Sets the callback that creates node representation.\r\n *\r\n * @param builderCallback a callback function that accepts graph node\r\n * as a parameter and must return an element representing this node.\r\n *\r\n * @returns If builderCallbackOrNode is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned\r\n */\r\n node : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n nodeUIBuilder = builderCallback;\r\n\r\n return this;\r\n },\r\n\r\n /**\r\n * Sets the callback that creates link representation\r\n *\r\n * @param builderCallback a callback function that accepts graph link\r\n * as a parameter and must return an element representing this link.\r\n *\r\n * @returns If builderCallback is a valid callback function, instance of this is returned;\r\n * Otherwise undefined value is returned.\r\n */\r\n link : function (builderCallback) {\r\n if (typeof builderCallback !== \"function\") {\r\n return; // todo: throw? This is not compatible with old versions\r\n }\r\n\r\n linkUIBuilder = builderCallback;\r\n return this;\r\n },\r\n\r\n\r\n /**\r\n * Allows to override default position setter for the node with a new\r\n * function. newPlaceCallback(nodeUI, position) is function which\r\n * is used by updateNodePosition().\r\n */\r\n placeNode : function (newPlaceCallback) {\r\n userPlaceNodeCallback = newPlaceCallback;\r\n return this;\r\n },\r\n\r\n placeLink : function (newPlaceLinkCallback) {\r\n userPlaceLinkCallback = newPlaceLinkCallback;\r\n return this;\r\n },\r\n\r\n /**\r\n * Custom input manager listens to mouse events to process nodes drag-n-drop inside WebGL canvas\r\n */\r\n inputManager : webglInputManager,\r\n\r\n /**\r\n * Called every time before renderer starts rendering.\r\n */\r\n beginRender : function () {\r\n // this function could be replaced by this.init,\r\n // based on user options.\r\n },\r\n\r\n /**\r\n * Called every time when renderer finishes one step of rendering.\r\n */\r\n endRender : function () {\r\n if (linksCount > 0) {\r\n linkProgram.render();\r\n }\r\n if (nodesCount > 0) {\r\n nodeProgram.render();\r\n }\r\n },\r\n\r\n bringLinkToFront : function (linkUI) {\r\n var frontLinkId = linkProgram.getFrontLinkId(),\r\n srcLinkId,\r\n temp;\r\n\r\n linkProgram.bringToFront(linkUI);\r\n\r\n if (frontLinkId > linkUI.id) {\r\n srcLinkId = linkUI.id;\r\n\r\n temp = links[frontLinkId];\r\n links[frontLinkId] = links[srcLinkId];\r\n links[frontLinkId].id = frontLinkId;\r\n links[srcLinkId] = temp;\r\n links[srcLinkId].id = srcLinkId;\r\n }\r\n },\r\n\r\n /**\r\n * Sets translate operation that should be applied to all nodes and links.\r\n */\r\n graphCenterChanged : function (x, y) {\r\n transform[12] = (2 * x / width) - 1;\r\n transform[13] = 1 - (2 * y / height);\r\n updateTransformUniform();\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given link of the graph\r\n *\r\n * @param link - model of a link\r\n */\r\n addLink: function (link, boundPosition) {\r\n var uiid = linksCount++,\r\n ui = linkUIBuilder(link);\r\n ui.id = uiid;\r\n ui.pos = boundPosition;\r\n\r\n linkProgram.createLink(ui);\r\n\r\n links[uiid] = ui;\r\n allLinks[link.id] = ui;\r\n return ui;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render given node of the graph.\r\n *\r\n * @param nodeUI visual representation of the node created by node() execution.\r\n **/\r\n addNode : function (node, boundPosition) {\r\n var uiid = nodesCount++,\r\n ui = nodeUIBuilder(node);\r\n\r\n ui.id = uiid;\r\n ui.position = boundPosition;\r\n ui.node = node;\r\n\r\n nodeProgram.createNode(ui);\r\n\r\n nodes[uiid] = ui;\r\n allNodes[node.id] = ui;\r\n return ui;\r\n },\r\n\r\n translateRel : function (dx, dy) {\r\n transform[12] += (2 * transform[0] * dx / width) / transform[0];\r\n transform[13] -= (2 * transform[5] * dy / height) / transform[5];\r\n updateTransformUniform();\r\n },\r\n\r\n scale : function (scaleFactor, scrollPoint) {\r\n // Transform scroll point to clip-space coordinates:\r\n var cx = 2 * scrollPoint.x / width - 1,\r\n cy = 1 - (2 * scrollPoint.y) / height;\r\n\r\n cx -= transform[12];\r\n cy -= transform[13];\r\n\r\n transform[12] += cx * (1 - scaleFactor);\r\n transform[13] += cy * (1 - scaleFactor);\r\n\r\n transform[0] *= scaleFactor;\r\n transform[5] *= scaleFactor;\r\n\r\n updateTransformUniform();\r\n fireRescaled(this);\r\n\r\n return transform[0];\r\n },\r\n\r\n resetScale : function () {\r\n resetScaleInternal();\r\n\r\n if (gl) {\r\n updateSize();\r\n // TODO: what is this?\r\n // gl.useProgram(linksProgram);\r\n // gl.uniform2f(linksProgram.screenSize, width, height);\r\n updateTransformUniform();\r\n }\r\n return this;\r\n },\r\n\r\n /**\r\n * Resizes the graphic without resetting the scale. \r\n * Useful with viva graph in a dynamic container\r\n */\r\n updateSize: updateSize,\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider prepare to render.\r\n */\r\n init : function (c) {\r\n var contextParameters = {};\r\n\r\n if (options.preserveDrawingBuffer) {\r\n contextParameters.preserveDrawingBuffer = true;\r\n }\r\n\r\n container = c;\r\n\r\n updateSize();\r\n resetScaleInternal();\r\n container.appendChild(graphicsRoot);\r\n\r\n\r\n gl = graphicsRoot.getContext(\"experimental-webgl\", contextParameters);\r\n if (!gl) {\r\n var msg = \"Could not initialize WebGL. Seems like the browser doesn't support it.\";\r\n window.alert(msg);\r\n throw msg;\r\n }\r\n if (options.enableBlending) {\r\n gl.blendFunc(gl.SRC_ALPHA, gl.ONE_MINUS_SRC_ALPHA);\r\n gl.enable(gl.BLEND);\r\n }\r\n if (options.clearColor) {\r\n var color = options.clearColorValue;\r\n gl.clearColor(color.r, color.g, color.b, color.a);\r\n // TODO: not the best way, really. Should come up with something better\r\n // what if we need more updates inside beginRender, like depth buffer?\r\n this.beginRender = function () {\r\n gl.clear(gl.COLOR_BUFFER_BIT);\r\n };\r\n }\r\n\r\n linkProgram.load(gl);\r\n linkProgram.updateSize(width / 2, height / 2);\r\n\r\n nodeProgram.load(gl);\r\n nodeProgram.updateSize(width / 2, height / 2);\r\n\r\n updateTransformUniform();\r\n\r\n // Notify the world if someone waited for update. TODO: should send an event\r\n if (typeof initCallback === \"function\") {\r\n initCallback(graphicsRoot);\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider release occupied resources.\r\n */\r\n release : function (container) {\r\n if (graphicsRoot && container) {\r\n container.removeChild(graphicsRoot);\r\n // TODO: anything else?\r\n }\r\n },\r\n\r\n /**\r\n * Checks whether webgl is supported by this browser.\r\n */\r\n isSupported : function () {\r\n var c = window.document.createElement(\"canvas\"),\r\n gl = c && c.getContext && c.getContext(\"experimental-webgl\");\r\n return gl;\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove link from rendering surface.\r\n *\r\n * @param linkUI visual representation of the link created by link() execution.\r\n **/\r\n releaseLink : function (link) {\r\n if (linksCount > 0) { linksCount -= 1; }\r\n var linkUI = allLinks[link.id];\r\n delete allLinks[link.id];\r\n\r\n linkProgram.removeLink(linkUI);\r\n\r\n var linkIdToRemove = linkUI.id;\r\n if (linkIdToRemove < linksCount) {\r\n if (linksCount === 0 || linksCount === linkIdToRemove) {\r\n return; // no more links or removed link is the last one.\r\n }\r\n\r\n var lastLinkUI = links[linksCount];\r\n links[linkIdToRemove] = lastLinkUI;\r\n lastLinkUI.id = linkIdToRemove;\r\n }\r\n },\r\n\r\n /**\r\n * Called by Viva.Graph.View.renderer to let concrete graphic output\r\n * provider remove node from rendering surface.\r\n *\r\n * @param nodeUI visual representation of the node created by node() execution.\r\n **/\r\n releaseNode : function (node) {\r\n if (nodesCount > 0) { nodesCount -= 1; }\r\n var nodeUI = allNodes[node.id];\r\n delete allNodes[node.id];\r\n\r\n nodeProgram.removeNode(nodeUI);\r\n\r\n var nodeIdToRemove = nodeUI.id;\r\n if (nodeIdToRemove < nodesCount) {\r\n if (nodesCount === 0 || nodesCount === nodeIdToRemove) {\r\n return; // no more nodes or removed node is the last in the list.\r\n }\r\n\r\n var lastNodeUI = nodes[nodesCount];\r\n\r\n nodes[nodeIdToRemove] = lastNodeUI;\r\n lastNodeUI.id = nodeIdToRemove;\r\n\r\n // Since concrete shaders may cache properties in the UI element\r\n // we are letting them to make this swap (e.g. image node shader\r\n // uses this approach to update node's offset in the atlas)\r\n nodeProgram.replaceProperties(nodeUI, lastNodeUI);\r\n }\r\n },\r\n\r\n renderNodes: function () {\r\n var pos = {x : 0, y : 0};\r\n // WebGL coordinate system is different. Would be better\r\n // to have this transform in the shader code, but it would\r\n // require every shader to be updated..\r\n for (var i = 0; i < nodesCount; ++i) {\r\n var ui = nodes[i];\r\n pos.x = ui.position.x;\r\n pos.y = ui.position.y;\r\n if (userPlaceNodeCallback) {\r\n userPlaceNodeCallback(ui, pos);\r\n }\r\n\r\n nodeProgram.position(ui, pos);\r\n }\r\n },\r\n\r\n renderLinks: function () {\r\n if (this.omitLinksRendering) { return; }\r\n\r\n var toPos = {x : 0, y : 0};\r\n var fromPos = {x : 0, y : 0};\r\n for (var i = 0; i < linksCount; ++i) {\r\n var ui = links[i];\r\n var pos = ui.pos.from;\r\n fromPos.x = pos.x;\r\n fromPos.y = -pos.y;\r\n pos = ui.pos.to;\r\n toPos.x = pos.x;\r\n toPos.y = -pos.y;\r\n if (userPlaceLinkCallback) {\r\n userPlaceLinkCallback(ui, fromPos, toPos);\r\n }\r\n\r\n linkProgram.position(ui, fromPos, toPos);\r\n }\r\n },\r\n\r\n /**\r\n * Returns root element which hosts graphics.\r\n */\r\n getGraphicsRoot : function (callbackWhenReady) {\r\n // todo: should fire an event, instead of having this context.\r\n if (typeof callbackWhenReady === \"function\") {\r\n if (graphicsRoot) {\r\n callbackWhenReady(graphicsRoot);\r\n } else {\r\n initCallback = callbackWhenReady;\r\n }\r\n }\r\n return graphicsRoot;\r\n },\r\n\r\n /**\r\n * Updates default shader which renders nodes\r\n *\r\n * @param newProgram to use for nodes.\r\n */\r\n setNodeProgram : function (newProgram) {\r\n if (!gl && newProgram) {\r\n // Nothing created yet. Just set shader to the new one\r\n // and let initialization logic take care about the rest.\r\n nodeProgram = newProgram;\r\n } else if (newProgram) {\r\n throw \"Not implemented. Cannot swap shader on the fly... Yet.\";\r\n // TODO: unload old shader and reinit.\r\n }\r\n },\r\n\r\n /**\r\n * Updates default shader which renders links\r\n *\r\n * @param newProgram to use for links.\r\n */\r\n setLinkProgram : function (newProgram) {\r\n if (!gl && newProgram) {\r\n // Nothing created yet. Just set shader to the new one\r\n // and let initialization logic take care about the rest.\r\n linkProgram = newProgram;\r\n } else if (newProgram) {\r\n throw \"Not implemented. Cannot swap shader on the fly... Yet.\";\r\n // TODO: unload old shader and reinit.\r\n }\r\n },\r\n\r\n /**\r\n * Transforms client coordinates into layout coordinates. Client coordinates\r\n * are DOM coordinates relative to the rendering container. Layout\r\n * coordinates are those assigned by by layout algorithm to each node.\r\n *\r\n * @param {Object} p - a point object with `x` and `y` attributes.\r\n * This method mutates p.\r\n */\r\n transformClientToGraphCoordinates: function (p) {\r\n // TODO: could be a problem when container has margins?\r\n // normalize\r\n p.x = ((2 * p.x) / width) - 1;\r\n p.y = 1 - ((2 * p.y) / height);\r\n\r\n // apply transform\r\n p.x = (p.x - transform[12]) / transform[0];\r\n p.y = (p.y - transform[13]) / transform[5];\r\n\r\n // transform to graph coordinates\r\n p.x = p.x * (width / 2);\r\n p.y = p.y * (-height / 2);\r\n\r\n return p;\r\n },\r\n\r\n /**\r\n * Transforms WebGL coordinates into client coordinates. Reverse of \r\n * `transformClientToGraphCoordinates()`\r\n *\r\n * @param {Object} p - a point object with `x` and `y` attributes, which\r\n * represents a layout coordinate. This method mutates p.\r\n */\r\n transformGraphToClientCoordinates: function (p) {\r\n // TODO: could be a problem when container has margins?\r\n // transform from graph coordinates\r\n p.x = p.x / (width / 2);\r\n p.y = p.y / (-height / 2);\r\n\r\n // apply transform\r\n p.x = (p.x * transform[0]) + transform[12];\r\n p.y = (p.y * transform[5]) + transform[13];\r\n\r\n // denormalize\r\n p.x = ((p.x + 1) * width) / 2;\r\n p.y = ((1 - p.y) * height) / 2;\r\n\r\n return p;\r\n },\r\n\r\n getNodeAtClientPos: function (clientPos, preciseCheck) {\r\n if (typeof preciseCheck !== \"function\") {\r\n // we don't know anything about your node structure here :(\r\n // potentially this could be delegated to node program, but for\r\n // right now, we are giving up if you don't pass boundary check\r\n // callback. It answers to a question is nodeUI covers (x, y)\r\n return null;\r\n }\r\n // first transform to graph coordinates:\r\n this.transformClientToGraphCoordinates(clientPos);\r\n // now using precise check iterate over each node and find one within box:\r\n // TODO: This is poor O(N) performance.\r\n for (var i = 0; i < nodesCount; ++i) {\r\n if (preciseCheck(nodes[i], clientPos.x, clientPos.y)) {\r\n return nodes[i].node;\r\n }\r\n }\r\n return null;\r\n }\r\n };\r\n\r\n // Let graphics fire events before we return it to the caller.\r\n eventify(graphics);\r\n\r\n return graphics;\r\n}\r\n","module.exports = parseColor;\n\nfunction parseColor(color) {\n var parsedColor = 0x009ee8ff;\n\n if (typeof color === 'string' && color) {\n if (color.length === 4) { // #rgb\n color = color.replace(/([^#])/g, '$1$1'); // duplicate each letter except first #.\n }\n if (color.length === 9) { // #rrggbbaa\n parsedColor = parseInt(color.substr(1), 16);\n } else if (color.length === 7) { // or #rrggbb.\n parsedColor = (parseInt(color.substr(1), 16) << 8) | 0xff;\n } else {\n throw 'Color expected in hex format with preceding \"#\". E.g. #00ff00. Got value: ' + color;\n }\n } else if (typeof color === 'number') {\n parsedColor = color;\n }\n\n return parsedColor;\n}\n","module.exports = Texture;\n\n/**\n * Single texture in the webglAtlas.\n */\nfunction Texture(size) {\n this.canvas = window.document.createElement(\"canvas\");\n this.ctx = this.canvas.getContext(\"2d\");\n this.isDirty = false;\n this.canvas.width = this.canvas.height = size;\n}\n","/**\n * @fileOverview Utility functions for webgl rendering.\n *\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nmodule.exports = webgl;\n\nfunction webgl(gl) {\n\n return {\n createProgram: createProgram,\n extendArray: extendArray,\n copyArrayPart: copyArrayPart,\n swapArrayPart: swapArrayPart,\n getLocations: getLocations,\n context: gl\n };\n\n function createShader(shaderText, type) {\n var shader = gl.createShader(type);\n gl.shaderSource(shader, shaderText);\n gl.compileShader(shader);\n\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n var msg = gl.getShaderInfoLog(shader);\n window.alert(msg);\n throw msg;\n }\n\n return shader;\n }\n\n function createProgram(vertexShaderSrc, fragmentShaderSrc) {\n var program = gl.createProgram();\n var vs = createShader(vertexShaderSrc, gl.VERTEX_SHADER);\n var fs = createShader(fragmentShaderSrc, gl.FRAGMENT_SHADER);\n\n gl.attachShader(program, vs);\n gl.attachShader(program, fs);\n gl.linkProgram(program);\n\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n var msg = gl.getShaderInfoLog(program);\n window.alert(msg);\n throw msg;\n }\n\n return program;\n }\n\n function extendArray(buffer, itemsInBuffer, elementsPerItem) {\n if ((itemsInBuffer + 1) * elementsPerItem > buffer.length) {\n // Every time we run out of space create new array twice bigger.\n // TODO: it seems buffer size is limited. Consider using multiple arrays for huge graphs\n var extendedArray = new Float32Array(buffer.length * elementsPerItem * 2);\n extendedArray.set(buffer);\n\n return extendedArray;\n }\n\n return buffer;\n }\n\n function getLocations(program, uniformOrAttributeNames) {\n var foundLocations = {};\n for (var i = 0; i < uniformOrAttributeNames.length; ++i) {\n var name = uniformOrAttributeNames[i];\n var location = -1;\n if (name[0] === 'a' && name[1] === '_') {\n location = gl.getAttribLocation(program, name);\n if (location === -1) {\n throw new Error(\"Program doesn't have required attribute: \" + name);\n }\n\n foundLocations[name.slice(2)] = location;\n } else if (name[0] === 'u' && name[1] === '_') {\n location = gl.getUniformLocation(program, name);\n if (location === null) {\n throw new Error(\"Program doesn't have required uniform: \" + name);\n }\n\n foundLocations[name.slice(2)] = location;\n } else {\n throw new Error(\"Couldn't figure out your intent. All uniforms should start with 'u_' prefix, and attributes with 'a_'\");\n }\n }\n\n return foundLocations;\n }\n}\n\nfunction copyArrayPart(array, to, from, elementsCount) {\n for (var i = 0; i < elementsCount; ++i) {\n array[to + i] = array[from + i];\n }\n}\n\nfunction swapArrayPart(array, from, to, elementsCount) {\n for (var i = 0; i < elementsCount; ++i) {\n var tmp = array[from + i];\n array[from + i] = array[to + i];\n array[to + i] = tmp;\n }\n}\n","var Texture = require('./texture.js');\n\nmodule.exports = webglAtlas;\n\n/**\n * My naive implementation of textures atlas. It allows clients to load\n * multiple images into atlas and get canvas representing all of them.\n *\n * @param tilesPerTexture - indicates how many images can be loaded to one\n * texture of the atlas. If number of loaded images exceeds this\n * parameter a new canvas will be created.\n */\nfunction webglAtlas(tilesPerTexture) {\n var tilesPerRow = Math.sqrt(tilesPerTexture || 1024) << 0,\n tileSize = tilesPerRow,\n lastLoadedIdx = 1,\n loadedImages = {},\n dirtyTimeoutId,\n skipedDirty = 0,\n textures = [],\n trackedUrls = [];\n\n if (!isPowerOf2(tilesPerTexture)) {\n throw \"Tiles per texture should be power of two.\";\n }\n\n // this is the return object\n var api = {\n /**\n * indicates whether atlas has changed texture in it. If true then\n * some of the textures has isDirty flag set as well.\n */\n isDirty: false,\n\n /**\n * Clears any signs of atlas changes.\n */\n clearDirty: clearDirty,\n\n /**\n * Removes given url from collection of tiles in the atlas.\n */\n remove: remove,\n\n /**\n * Gets all textures in the atlas.\n */\n getTextures: getTextures,\n\n /**\n * Gets coordinates of the given image in the atlas. Coordinates is an object:\n * {offset : int } - where offset is an absolute position of the image in the\n * atlas.\n *\n * Absolute means it can be larger than tilesPerTexture parameter, and in that\n * case clients should get next texture in getTextures() collection.\n */\n getCoordinates: getCoordinates,\n\n /**\n * Asynchronously Loads the image to the atlas. Cross-domain security\n * limitation applies.\n */\n load: load\n };\n\n return api;\n\n function clearDirty() {\n var i;\n api.isDirty = false;\n for (i = 0; i < textures.length; ++i) {\n textures[i].isDirty = false;\n }\n }\n\n function remove(imgUrl) {\n var coordinates = loadedImages[imgUrl];\n if (!coordinates) {\n return false;\n }\n delete loadedImages[imgUrl];\n lastLoadedIdx -= 1;\n\n\n if (lastLoadedIdx === coordinates.offset) {\n return true; // Ignore if it's last image in the whole set.\n }\n\n var tileToRemove = getTileCoordinates(coordinates.offset),\n lastTileInSet = getTileCoordinates(lastLoadedIdx);\n\n copy(lastTileInSet, tileToRemove);\n\n var replacedOffset = loadedImages[trackedUrls[lastLoadedIdx]];\n replacedOffset.offset = coordinates.offset;\n trackedUrls[coordinates.offset] = trackedUrls[lastLoadedIdx];\n\n markDirty();\n return true;\n }\n\n function getTextures() {\n return textures; // I trust you...\n }\n\n function getCoordinates(imgUrl) {\n return loadedImages[imgUrl];\n }\n\n function load(imgUrl, callback) {\n if (loadedImages.hasOwnProperty(imgUrl)) {\n callback(loadedImages[imgUrl]);\n } else {\n var img = new window.Image(),\n imgId = lastLoadedIdx;\n\n lastLoadedIdx += 1;\n img.crossOrigin = \"anonymous\";\n img.onload = function() {\n markDirty();\n drawAt(imgId, img, callback);\n };\n\n img.src = imgUrl;\n }\n }\n\n function createTexture() {\n var texture = new Texture(tilesPerRow * tileSize);\n textures.push(texture);\n }\n\n function drawAt(tileNumber, img, callback) {\n var tilePosition = getTileCoordinates(tileNumber),\n coordinates = {\n offset: tileNumber\n };\n\n if (tilePosition.textureNumber >= textures.length) {\n createTexture();\n }\n var currentTexture = textures[tilePosition.textureNumber];\n\n currentTexture.ctx.drawImage(img, tilePosition.col * tileSize, tilePosition.row * tileSize, tileSize, tileSize);\n trackedUrls[tileNumber] = img.src;\n\n loadedImages[img.src] = coordinates;\n currentTexture.isDirty = true;\n\n callback(coordinates);\n }\n\n function getTileCoordinates(absolutePosition) {\n var textureNumber = (absolutePosition / tilesPerTexture) << 0,\n localTileNumber = (absolutePosition % tilesPerTexture),\n row = (localTileNumber / tilesPerRow) << 0,\n col = (localTileNumber % tilesPerRow);\n\n return {\n textureNumber: textureNumber,\n row: row,\n col: col\n };\n }\n\n function markDirtyNow() {\n api.isDirty = true;\n skipedDirty = 0;\n dirtyTimeoutId = null;\n }\n\n function markDirty() {\n // delay this call, since it results in texture reload\n if (dirtyTimeoutId) {\n window.clearTimeout(dirtyTimeoutId);\n skipedDirty += 1;\n dirtyTimeoutId = null;\n }\n\n if (skipedDirty > 10) {\n markDirtyNow();\n } else {\n dirtyTimeoutId = window.setTimeout(markDirtyNow, 400);\n }\n }\n\n function copy(from, to) {\n var fromCanvas = textures[from.textureNumber].canvas,\n toCtx = textures[to.textureNumber].ctx,\n x = to.col * tileSize,\n y = to.row * tileSize;\n\n toCtx.drawImage(fromCanvas, from.col * tileSize, from.row * tileSize, tileSize, tileSize, x, y, tileSize, tileSize);\n textures[from.textureNumber].isDirty = true;\n textures[to.textureNumber].isDirty = true;\n }\n}\n\nfunction isPowerOf2(n) {\n return (n & (n - 1)) === 0;\n}\n","module.exports = webglImage;\n\n/**\n * Represents a model for image.\n */\nfunction webglImage(size, src) {\n return {\n /**\n * Gets texture index where current image is placed.\n */\n _texture : 0,\n\n /**\n * Gets offset in the texture where current image is placed.\n */\n _offset : 0,\n\n /**\n * Gets size of the square with the image.\n */\n size : typeof size === 'number' ? size : 32,\n\n /**\n * Source of the image. If image is coming not from your domain\n * certain origin restrictions applies.\n * See http://www.khronos.org/registry/webgl/specs/latest/#4.2 for more details.\n */\n src : src\n };\n}\n","/**\n * @fileOverview Defines an image nodes for webglGraphics class.\n * Shape of nodes is square.\n *\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nvar WebglAtlas = require('./webglAtlas.js');\nvar glUtils = require('./webgl.js');\n\nmodule.exports = webglImageNodeProgram;\n\n/**\n * Defines simple UI for nodes in webgl renderer. Each node is rendered as an image.\n * \n * @param {number} tilesPerTexture\n * \n */\nfunction webglImageNodeProgram(tilesPerTexture) {\n // WebGL is gian state machine, we store some properties of the state here:\n var ATTRIBUTES_PER_PRIMITIVE = 18;\n var nodesFS = createNodeFragmentShader();\n var nodesVS = createNodeVertexShader();\n var tilesPerTexture = tilesPerTexture || 1024; // TODO: Get based on max texture size\n var atlas;\n var program;\n var gl;\n var buffer;\n var utils;\n var locations;\n var nodesCount = 0;\n var nodes = new Float32Array(64);\n var width;\n var height;\n var transform;\n var sizeDirty;\n\n\n return {\n load: load,\n\n /**\n * Updates position of current node in the buffer of nodes.\n *\n * @param idx - index of current node.\n * @param pos - new position of the node.\n */\n position: position,\n\n createNode: createNode,\n\n removeNode: removeNode,\n\n replaceProperties: replaceProperties,\n\n updateTransform: updateTransform,\n\n updateSize: updateSize,\n\n render: render\n };\n\n function refreshTexture(texture, idx) {\n if (texture.nativeObject) {\n gl.deleteTexture(texture.nativeObject);\n }\n\n var nativeObject = gl.createTexture();\n gl.activeTexture(gl[\"TEXTURE\" + idx]);\n gl.bindTexture(gl.TEXTURE_2D, nativeObject);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, texture.canvas);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR_MIPMAP_NEAREST);\n\n gl.generateMipmap(gl.TEXTURE_2D);\n gl.uniform1i(locations[\"sampler\" + idx], idx);\n\n texture.nativeObject = nativeObject;\n }\n\n function ensureAtlasTextureUpdated() {\n if (atlas.isDirty) {\n var textures = atlas.getTextures(),\n i;\n for (i = 0; i < textures.length; ++i) {\n if (textures[i].isDirty || !textures[i].nativeObject) {\n refreshTexture(textures[i], i);\n }\n }\n\n atlas.clearDirty();\n }\n }\n\n function load(glContext) {\n gl = glContext;\n utils = glUtils(glContext);\n\n atlas = new WebglAtlas(tilesPerTexture);\n\n program = utils.createProgram(nodesVS, nodesFS);\n gl.useProgram(program);\n locations = utils.getLocations(program, [\"a_vertexPos\", \"a_customAttributes\", \"u_screenSize\", \"u_transform\", \"u_sampler0\", \"u_sampler1\", \"u_sampler2\", \"u_sampler3\", \"u_tilesPerTexture\"]);\n\n gl.uniform1f(locations.tilesPerTexture, tilesPerTexture);\n\n gl.enableVertexAttribArray(locations.vertexPos);\n gl.enableVertexAttribArray(locations.customAttributes);\n\n buffer = gl.createBuffer();\n }\n\n function position(nodeUI, pos) {\n var idx = nodeUI.id * ATTRIBUTES_PER_PRIMITIVE;\n nodes[idx] = pos.x - nodeUI.size;\n nodes[idx + 1] = -pos.y - nodeUI.size;\n nodes[idx + 2] = nodeUI._offset * 4;\n\n nodes[idx + 3] = pos.x + nodeUI.size;\n nodes[idx + 4] = -pos.y - nodeUI.size;\n nodes[idx + 5] = nodeUI._offset * 4 + 1;\n\n nodes[idx + 6] = pos.x - nodeUI.size;\n nodes[idx + 7] = -pos.y + nodeUI.size;\n nodes[idx + 8] = nodeUI._offset * 4 + 2;\n\n nodes[idx + 9] = pos.x - nodeUI.size;\n nodes[idx + 10] = -pos.y + nodeUI.size;\n nodes[idx + 11] = nodeUI._offset * 4 + 2;\n\n nodes[idx + 12] = pos.x + nodeUI.size;\n nodes[idx + 13] = -pos.y - nodeUI.size;\n nodes[idx + 14] = nodeUI._offset * 4 + 1;\n\n nodes[idx + 15] = pos.x + nodeUI.size;\n nodes[idx + 16] = -pos.y + nodeUI.size;\n nodes[idx + 17] = nodeUI._offset * 4 + 3;\n }\n\n function createNode(ui) {\n nodes = utils.extendArray(nodes, nodesCount, ATTRIBUTES_PER_PRIMITIVE);\n nodesCount += 1;\n\n var coordinates = atlas.getCoordinates(ui.src);\n if (coordinates) {\n ui._offset = coordinates.offset;\n } else {\n ui._offset = 0;\n // Image is not yet loaded into the atlas. Reload it:\n atlas.load(ui.src, function(coordinates) {\n ui._offset = coordinates.offset;\n });\n }\n }\n\n function removeNode(nodeUI) {\n if (nodesCount > 0) {\n nodesCount -= 1;\n }\n\n if (nodeUI.id < nodesCount && nodesCount > 0) {\n if (nodeUI.src) {\n atlas.remove(nodeUI.src);\n }\n\n utils.copyArrayPart(nodes, nodeUI.id * ATTRIBUTES_PER_PRIMITIVE, nodesCount * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n }\n\n function replaceProperties(replacedNode, newNode) {\n newNode._offset = replacedNode._offset;\n }\n\n function updateTransform(newTransform) {\n sizeDirty = true;\n transform = newTransform;\n }\n\n function updateSize(w, h) {\n width = w;\n height = h;\n sizeDirty = true;\n }\n\n function render() {\n gl.useProgram(program);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, nodes, gl.DYNAMIC_DRAW);\n\n if (sizeDirty) {\n sizeDirty = false;\n gl.uniformMatrix4fv(locations.transform, false, transform);\n gl.uniform2f(locations.screenSize, width, height);\n }\n\n gl.vertexAttribPointer(locations.vertexPos, 2, gl.FLOAT, false, 3 * Float32Array.BYTES_PER_ELEMENT, 0);\n gl.vertexAttribPointer(locations.customAttributes, 1, gl.FLOAT, false, 3 * Float32Array.BYTES_PER_ELEMENT, 2 * 4);\n\n ensureAtlasTextureUpdated();\n\n gl.drawArrays(gl.TRIANGLES, 0, nodesCount * 6);\n }\n}\n\n// TODO: Use glslify for shaders\nfunction createNodeFragmentShader() {\n return [\n \"precision mediump float;\",\n \"varying vec4 color;\",\n \"varying vec3 vTextureCoord;\",\n \"uniform sampler2D u_sampler0;\",\n \"uniform sampler2D u_sampler1;\",\n \"uniform sampler2D u_sampler2;\",\n \"uniform sampler2D u_sampler3;\",\n\n \"void main(void) {\",\n \" if (vTextureCoord.z == 0.) {\",\n \" gl_FragColor = texture2D(u_sampler0, vTextureCoord.xy);\",\n \" } else if (vTextureCoord.z == 1.) {\",\n \" gl_FragColor = texture2D(u_sampler1, vTextureCoord.xy);\",\n \" } else if (vTextureCoord.z == 2.) {\",\n \" gl_FragColor = texture2D(u_sampler2, vTextureCoord.xy);\",\n \" } else if (vTextureCoord.z == 3.) {\",\n \" gl_FragColor = texture2D(u_sampler3, vTextureCoord.xy);\",\n \" } else { gl_FragColor = vec4(0, 1, 0, 1); }\",\n \"}\"\n ].join(\"\\n\");\n}\n\nfunction createNodeVertexShader() {\n return [\n \"attribute vec2 a_vertexPos;\",\n\n \"attribute float a_customAttributes;\",\n \"uniform vec2 u_screenSize;\",\n \"uniform mat4 u_transform;\",\n \"uniform float u_tilesPerTexture;\",\n \"varying vec3 vTextureCoord;\",\n\n \"void main(void) {\",\n \" gl_Position = u_transform * vec4(a_vertexPos/u_screenSize, 0, 1);\",\n \"float corner = mod(a_customAttributes, 4.);\",\n \"float tileIndex = mod(floor(a_customAttributes / 4.), u_tilesPerTexture);\",\n \"float tilesPerRow = sqrt(u_tilesPerTexture);\",\n \"float tileSize = 1./tilesPerRow;\",\n \"float tileColumn = mod(tileIndex, tilesPerRow);\",\n \"float tileRow = floor(tileIndex/tilesPerRow);\",\n\n \"if(corner == 0.0) {\",\n \" vTextureCoord.xy = vec2(0, 1);\",\n \"} else if(corner == 1.0) {\",\n \" vTextureCoord.xy = vec2(1, 1);\",\n \"} else if(corner == 2.0) {\",\n \" vTextureCoord.xy = vec2(0, 0);\",\n \"} else {\",\n \" vTextureCoord.xy = vec2(1, 0);\",\n \"}\",\n\n \"vTextureCoord *= tileSize;\",\n \"vTextureCoord.x += tileColumn * tileSize;\",\n \"vTextureCoord.y += tileRow * tileSize;\",\n \"vTextureCoord.z = floor(floor(a_customAttributes / 4.)/u_tilesPerTexture);\",\n \"}\"\n ].join(\"\\n\");\n}\n","var documentEvents = require('../Utils/documentEvents.js');\n\nmodule.exports = webglInputEvents;\n\n/**\n * Monitors graph-related mouse input in webgl graphics and notifies subscribers.\n *\n * @param {Viva.Graph.View.webglGraphics} webglGraphics\n */\nfunction webglInputEvents(webglGraphics) {\n if (webglGraphics.webglInputEvents) {\n // Don't listen twice, if we are already attached to this graphics:\n return webglGraphics.webglInputEvents;\n }\n\n var mouseCapturedNode = null,\n mouseEnterCallback = [],\n mouseLeaveCallback = [],\n mouseDownCallback = [],\n mouseUpCallback = [],\n mouseMoveCallback = [],\n clickCallback = [],\n dblClickCallback = [],\n prevSelectStart,\n boundRect;\n\n var root = webglGraphics.getGraphicsRoot();\n startListen(root);\n\n var api = {\n mouseEnter: mouseEnter,\n mouseLeave: mouseLeave,\n mouseDown: mouseDown,\n mouseUp: mouseUp,\n mouseMove: mouseMove,\n click: click,\n dblClick: dblClick,\n mouseCapture: mouseCapture,\n releaseMouseCapture: releaseMouseCapture\n };\n\n // TODO I don't remember why this is needed:\n webglGraphics.webglInputEvents = api;\n\n return api;\n\n function releaseMouseCapture() {\n mouseCapturedNode = null;\n }\n\n function mouseCapture(node) {\n mouseCapturedNode = node;\n }\n\n function dblClick(callback) {\n if (typeof callback === 'function') {\n dblClickCallback.push(callback);\n }\n return api;\n }\n\n function click(callback) {\n if (typeof callback === 'function') {\n clickCallback.push(callback);\n }\n return api;\n }\n\n function mouseMove(callback) {\n if (typeof callback === 'function') {\n mouseMoveCallback.push(callback);\n }\n return api;\n }\n\n function mouseUp(callback) {\n if (typeof callback === 'function') {\n mouseUpCallback.push(callback);\n }\n return api;\n }\n\n function mouseDown(callback) {\n if (typeof callback === 'function') {\n mouseDownCallback.push(callback);\n }\n return api;\n }\n\n function mouseLeave(callback) {\n if (typeof callback === 'function') {\n mouseLeaveCallback.push(callback);\n }\n return api;\n }\n\n function mouseEnter(callback) {\n if (typeof callback === 'function') {\n mouseEnterCallback.push(callback);\n }\n return api;\n }\n\n function preciseCheck(nodeUI, x, y) {\n if (nodeUI && nodeUI.size) {\n var pos = nodeUI.position,\n half = nodeUI.size;\n\n return pos.x - half < x && x < pos.x + half &&\n pos.y - half < y && y < pos.y + half;\n }\n\n return true;\n }\n\n function getNodeAtClientPos(pos) {\n return webglGraphics.getNodeAtClientPos(pos, preciseCheck);\n }\n\n function stopPropagation(e) {\n if (e.stopPropagation) {\n e.stopPropagation();\n } else {\n e.cancelBubble = true;\n }\n }\n\n function handleDisabledEvent(e) {\n stopPropagation(e);\n return false;\n }\n\n function invoke(callbacksChain, args) {\n var i, stopPropagation;\n for (i = 0; i < callbacksChain.length; i += 1) {\n stopPropagation = callbacksChain[i].apply(undefined, args);\n if (stopPropagation) {\n return true;\n }\n }\n }\n\n function startListen(root) {\n var pos = {\n x: 0,\n y: 0\n },\n lastFound = null,\n lastUpdate = 1,\n lastClickTime = +new Date(),\n\n handleMouseMove = function(e) {\n invoke(mouseMoveCallback, [lastFound, e]);\n pos.x = e.clientX;\n pos.y = e.clientY;\n },\n\n handleMouseUp = function() {\n documentEvents.off('mousemove', handleMouseMove);\n documentEvents.off('mouseup', handleMouseUp);\n },\n\n updateBoundRect = function() {\n boundRect = root.getBoundingClientRect();\n };\n\n window.addEventListener('resize', updateBoundRect);\n updateBoundRect();\n\n // mouse move inside container serves only to track mouse enter/leave events.\n root.addEventListener('mousemove',\n function(e) {\n if (mouseCapturedNode) {\n return;\n }\n if (lastUpdate++ % 7 === 0) {\n // since there is no bullet proof method to detect resize\n // event, we preemptively update the bounding rectangle\n updateBoundRect();\n lastUpdate = 1;\n }\n var cancelBubble = false,\n node;\n\n pos.x = e.clientX - boundRect.left;\n pos.y = e.clientY - boundRect.top;\n\n node = getNodeAtClientPos(pos);\n\n if (node && lastFound !== node) {\n if(lastFound){ \n invoke(mouseLeaveCallback, [lastFound]);\n }\n lastFound = node;\n cancelBubble = cancelBubble || invoke(mouseEnterCallback, [lastFound]);\n } else if (node === null && lastFound !== node) {\n cancelBubble = cancelBubble || invoke(mouseLeaveCallback, [lastFound]);\n lastFound = null;\n }\n\n if (cancelBubble) {\n stopPropagation(e);\n }\n });\n\n root.addEventListener('mousedown',\n function(e) {\n var cancelBubble = false,\n args;\n updateBoundRect();\n pos.x = e.clientX - boundRect.left;\n pos.y = e.clientY - boundRect.top;\n\n args = [getNodeAtClientPos(pos), e];\n if (args[0]) {\n cancelBubble = invoke(mouseDownCallback, args);\n // we clicked on a node. Following drag should be handled on document events:\n documentEvents.on('mousemove', handleMouseMove);\n documentEvents.on('mouseup', handleMouseUp);\n\n prevSelectStart = window.document.onselectstart;\n\n window.document.onselectstart = handleDisabledEvent;\n\n lastFound = args[0];\n } else {\n lastFound = null;\n }\n if (cancelBubble) {\n stopPropagation(e);\n }\n });\n\n root.addEventListener('mouseup',\n function(e) {\n var clickTime = +new Date(),\n args;\n\n pos.x = e.clientX - boundRect.left;\n pos.y = e.clientY - boundRect.top;\n\n var nodeAtClientPos = getNodeAtClientPos(pos);\n var sameNode = nodeAtClientPos === lastFound;\n args = [nodeAtClientPos || lastFound, e];\n if (args[0]) {\n window.document.onselectstart = prevSelectStart;\n\n if (clickTime - lastClickTime < 400 && sameNode) {\n invoke(dblClickCallback, args);\n } else {\n invoke(clickCallback, args);\n }\n lastClickTime = clickTime;\n\n if (invoke(mouseUpCallback, args)) {\n stopPropagation(e);\n }\n }\n });\n }\n}\n","var parseColor = require('./parseColor.js');\n\nmodule.exports = webglLine;\n\n/**\n * Defines a webgl line. This class has no rendering logic at all,\n * it's just passed to corresponding shader and the shader should\n * figure out how to render it.\n *\n */\nfunction webglLine(color) {\n return {\n /**\n * Gets or sets color of the line. If you set this property externally\n * make sure it always come as integer of 0xRRGGBBAA format\n */\n color: parseColor(color)\n };\n}\n","/**\n * @fileOverview Defines a naive form of links for webglGraphics class.\n * This form allows to change color of links.\n **/\n\nvar glUtils = require('./webgl.js');\n\nmodule.exports = webglLinkProgram;\n\n/**\n * Defines UI for links in webgl renderer.\n */\nfunction webglLinkProgram() {\n var ATTRIBUTES_PER_PRIMITIVE = 6, // primitive is Line with two points. Each has x,y and color = 3 * 2 attributes.\n BYTES_PER_LINK = 2 * (2 * Float32Array.BYTES_PER_ELEMENT + Uint32Array.BYTES_PER_ELEMENT), // two nodes * (x, y + color)\n linksFS = [\n 'precision mediump float;',\n 'varying vec4 color;',\n 'void main(void) {',\n ' gl_FragColor = color;',\n '}'\n ].join('\\n'),\n\n linksVS = [\n 'attribute vec2 a_vertexPos;',\n 'attribute vec4 a_color;',\n\n 'uniform vec2 u_screenSize;',\n 'uniform mat4 u_transform;',\n\n 'varying vec4 color;',\n\n 'void main(void) {',\n ' gl_Position = u_transform * vec4(a_vertexPos/u_screenSize, 0.0, 1.0);',\n ' color = a_color.abgr;',\n '}'\n ].join('\\n'),\n\n program,\n gl,\n buffer,\n utils,\n locations,\n linksCount = 0,\n frontLinkId, // used to track z-index of links.\n storage = new ArrayBuffer(16 * BYTES_PER_LINK),\n positions = new Float32Array(storage),\n colors = new Uint32Array(storage),\n width,\n height,\n transform,\n sizeDirty,\n\n ensureEnoughStorage = function () {\n // TODO: this is a duplicate of webglNodeProgram code. Extract it to webgl.js\n if ((linksCount+1)*BYTES_PER_LINK > storage.byteLength) {\n // Every time we run out of space create new array twice bigger.\n // TODO: it seems buffer size is limited. Consider using multiple arrays for huge graphs\n var extendedStorage = new ArrayBuffer(storage.byteLength * 2),\n extendedPositions = new Float32Array(extendedStorage),\n extendedColors = new Uint32Array(extendedStorage);\n\n extendedColors.set(colors); // should be enough to copy just one view.\n positions = extendedPositions;\n colors = extendedColors;\n storage = extendedStorage;\n }\n };\n\n return {\n load : function (glContext) {\n gl = glContext;\n utils = glUtils(glContext);\n\n program = utils.createProgram(linksVS, linksFS);\n gl.useProgram(program);\n locations = utils.getLocations(program, ['a_vertexPos', 'a_color', 'u_screenSize', 'u_transform']);\n\n gl.enableVertexAttribArray(locations.vertexPos);\n gl.enableVertexAttribArray(locations.color);\n\n buffer = gl.createBuffer();\n },\n\n position: function (linkUi, fromPos, toPos) {\n var linkIdx = linkUi.id,\n offset = linkIdx * ATTRIBUTES_PER_PRIMITIVE;\n positions[offset] = fromPos.x;\n positions[offset + 1] = fromPos.y;\n colors[offset + 2] = linkUi.color;\n\n positions[offset + 3] = toPos.x;\n positions[offset + 4] = toPos.y;\n colors[offset + 5] = linkUi.color;\n },\n\n createLink : function (ui) {\n ensureEnoughStorage();\n\n linksCount += 1;\n frontLinkId = ui.id;\n },\n\n removeLink : function (ui) {\n if (linksCount > 0) { linksCount -= 1; }\n // swap removed link with the last link. This will give us O(1) performance for links removal:\n if (ui.id < linksCount && linksCount > 0) {\n // using colors as a view to array buffer is okay here.\n utils.copyArrayPart(colors, ui.id * ATTRIBUTES_PER_PRIMITIVE, linksCount * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n },\n\n updateTransform : function (newTransform) {\n sizeDirty = true;\n transform = newTransform;\n },\n\n updateSize : function (w, h) {\n width = w;\n height = h;\n sizeDirty = true;\n },\n\n render : function () {\n gl.useProgram(program);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, storage, gl.DYNAMIC_DRAW);\n\n if (sizeDirty) {\n sizeDirty = false;\n gl.uniformMatrix4fv(locations.transform, false, transform);\n gl.uniform2f(locations.screenSize, width, height);\n }\n\n gl.vertexAttribPointer(locations.vertexPos, 2, gl.FLOAT, false, 3 * Float32Array.BYTES_PER_ELEMENT, 0);\n gl.vertexAttribPointer(locations.color, 4, gl.UNSIGNED_BYTE, true, 3 * Float32Array.BYTES_PER_ELEMENT, 2 * 4);\n\n gl.drawArrays(gl.LINES, 0, linksCount * 2);\n\n frontLinkId = linksCount - 1;\n },\n\n bringToFront : function (link) {\n if (frontLinkId > link.id) {\n utils.swapArrayPart(positions, link.id * ATTRIBUTES_PER_PRIMITIVE, frontLinkId * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n if (frontLinkId > 0) {\n frontLinkId -= 1;\n }\n },\n\n getFrontLinkId : function () {\n return frontLinkId;\n }\n };\n}\n","/**\n * @fileOverview Defines a naive form of nodes for webglGraphics class.\n * This form allows to change color of node. Shape of nodes is rectangular.\n *\n * @author Andrei Kashcha (aka anvaka) / https://github.com/anvaka\n */\n\nvar glUtils = require('./webgl.js');\n\nmodule.exports = webglNodeProgram;\n\n/**\n * Defines simple UI for nodes in webgl renderer. Each node is rendered as square. Color and size can be changed.\n */\nfunction webglNodeProgram() {\n var ATTRIBUTES_PER_PRIMITIVE = 4; // Primitive is point, x, y, size, color\n // x, y, z - floats, color = uint.\n var BYTES_PER_NODE = 3 * Float32Array.BYTES_PER_ELEMENT + Uint32Array.BYTES_PER_ELEMENT;\n var nodesFS = [\n 'precision mediump float;',\n 'varying vec4 color;',\n\n 'void main(void) {',\n ' gl_FragColor = color;',\n '}'\n ].join('\\n');\n var nodesVS = [\n 'attribute vec3 a_vertexPos;',\n 'attribute vec4 a_color;',\n 'uniform vec2 u_screenSize;',\n 'uniform mat4 u_transform;',\n 'varying vec4 color;',\n\n 'void main(void) {',\n ' gl_Position = u_transform * vec4(a_vertexPos.xy/u_screenSize, 0, 1);',\n ' gl_PointSize = a_vertexPos.z * u_transform[0][0];',\n ' color = a_color.abgr;',\n '}'\n ].join('\\n');\n\n var program;\n var gl;\n var buffer;\n var locations;\n var utils;\n var storage = new ArrayBuffer(16 * BYTES_PER_NODE);\n var positions = new Float32Array(storage);\n var colors = new Uint32Array(storage);\n var nodesCount = 0;\n var width;\n var height;\n var transform;\n var sizeDirty;\n\n return {\n load: load,\n\n /**\n * Updates position of node in the buffer of nodes.\n *\n * @param idx - index of current node.\n * @param pos - new position of the node.\n */\n position: position,\n\n updateTransform: updateTransform,\n\n updateSize: updateSize,\n\n removeNode: removeNode,\n\n createNode: createNode,\n\n replaceProperties: replaceProperties,\n\n render: render\n };\n\n function ensureEnoughStorage() {\n if ((nodesCount + 1) * BYTES_PER_NODE >= storage.byteLength) {\n // Every time we run out of space create new array twice bigger.\n // TODO: it seems buffer size is limited. Consider using multiple arrays for huge graphs\n var extendedStorage = new ArrayBuffer(storage.byteLength * 2),\n extendedPositions = new Float32Array(extendedStorage),\n extendedColors = new Uint32Array(extendedStorage);\n\n extendedColors.set(colors); // should be enough to copy just one view.\n positions = extendedPositions;\n colors = extendedColors;\n storage = extendedStorage;\n }\n }\n\n function load(glContext) {\n gl = glContext;\n utils = glUtils(glContext);\n\n program = utils.createProgram(nodesVS, nodesFS);\n gl.useProgram(program);\n locations = utils.getLocations(program, ['a_vertexPos', 'a_color', 'u_screenSize', 'u_transform']);\n\n gl.enableVertexAttribArray(locations.vertexPos);\n gl.enableVertexAttribArray(locations.color);\n\n buffer = gl.createBuffer();\n }\n\n function position(nodeUI, pos) {\n var idx = nodeUI.id;\n\n positions[idx * ATTRIBUTES_PER_PRIMITIVE] = pos.x;\n positions[idx * ATTRIBUTES_PER_PRIMITIVE + 1] = -pos.y;\n positions[idx * ATTRIBUTES_PER_PRIMITIVE + 2] = nodeUI.size;\n\n colors[idx * ATTRIBUTES_PER_PRIMITIVE + 3] = nodeUI.color;\n }\n\n function updateTransform(newTransform) {\n sizeDirty = true;\n transform = newTransform;\n }\n\n function updateSize(w, h) {\n width = w;\n height = h;\n sizeDirty = true;\n }\n\n function removeNode(node) {\n if (nodesCount > 0) {\n nodesCount -= 1;\n }\n\n if (node.id < nodesCount && nodesCount > 0) {\n // we can use colors as a 'view' into array array buffer.\n utils.copyArrayPart(colors, node.id * ATTRIBUTES_PER_PRIMITIVE, nodesCount * ATTRIBUTES_PER_PRIMITIVE, ATTRIBUTES_PER_PRIMITIVE);\n }\n }\n\n function createNode() {\n ensureEnoughStorage();\n nodesCount += 1;\n }\n\n function replaceProperties(/* replacedNode, newNode */) {}\n\n function render() {\n gl.useProgram(program);\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.bufferData(gl.ARRAY_BUFFER, storage, gl.DYNAMIC_DRAW);\n\n if (sizeDirty) {\n sizeDirty = false;\n gl.uniformMatrix4fv(locations.transform, false, transform);\n gl.uniform2f(locations.screenSize, width, height);\n }\n\n gl.vertexAttribPointer(locations.vertexPos, 3, gl.FLOAT, false, ATTRIBUTES_PER_PRIMITIVE * Float32Array.BYTES_PER_ELEMENT, 0);\n gl.vertexAttribPointer(locations.color, 4, gl.UNSIGNED_BYTE, true, ATTRIBUTES_PER_PRIMITIVE * Float32Array.BYTES_PER_ELEMENT, 3 * 4);\n\n gl.drawArrays(gl.POINTS, 0, nodesCount);\n }\n}\n","var parseColor = require('./parseColor.js');\n\nmodule.exports = webglSquare;\n\n/**\n * Can be used as a callback in the webglGraphics.node() function, to\n * create a custom looking node.\n *\n * @param size - size of the node in pixels.\n * @param color - color of the node in '#rrggbbaa' or '#rgb' format.\n */\nfunction webglSquare(size, color) {\n return {\n /**\n * Gets or sets size of the square side.\n */\n size: typeof size === 'number' ? size : 10,\n\n /**\n * Gets or sets color of the square.\n */\n color: parseColor(color)\n };\n}\n","// todo: this should be generated at build time.\nmodule.exports = '0.10.1';\n","/**\r\n * This is an entry point for global namespace. If you want to use separate\r\n * modules individually - you are more than welcome to do so.\r\n */\r\n\r\nvar random = require('ngraph.random');\r\n\r\nvar Viva = {\r\n lazyExtend: function() {\r\n return require('ngraph.merge').apply(this, arguments);\r\n },\r\n randomIterator: function() {\r\n return random.randomIterator.apply(random, arguments);\r\n },\r\n random: function() {\r\n return random.random.apply(random, arguments);\r\n },\r\n events: require('ngraph.events')\r\n};\r\n\r\nViva.Graph = {\r\n version: require('./version.js'),\r\n graph: require('ngraph.graph'),\r\n\r\n serializer: function() {\r\n return {\r\n loadFromJSON: require('ngraph.fromjson'),\r\n storeToJSON: require('ngraph.tojson')\r\n };\r\n },\r\n\r\n centrality: require('./Algorithms/centrality.js'),\r\n operations: require('./Algorithms/operations.js'),\r\n\r\n geom: function() {\r\n return {\r\n intersect: require('gintersect'),\r\n intersectRect: require('./Utils/intersectRect.js')\r\n };\r\n },\r\n\r\n webgl: require('./WebGL/webgl.js'),\r\n webglInputEvents: require('./WebGL/webglInputEvents.js'),\r\n\r\n generator: function() {\r\n return require('ngraph.generators');\r\n },\r\n\r\n Input: {\r\n domInputManager: require('./Input/domInputManager.js'),\r\n webglInputManager: require('./Input/webglInputManager.js')\r\n },\r\n\r\n Utils: {\r\n // TODO: move to Input\r\n dragndrop: require('./Input/dragndrop.js'),\r\n findElementPosition: require('./Utils/findElementPosition.js'),\r\n timer: require('./Utils/timer.js'),\r\n getDimension: require('./Utils/getDimensions.js'),\r\n events: require('./Utils/backwardCompatibleEvents.js')\r\n },\r\n\r\n Layout: {\r\n forceDirected: require('ngraph.forcelayout'),\r\n constant: require('./Layout/constant.js')\r\n },\r\n\r\n View: {\r\n // TODO: Move `webglXXX` out to webgl namespace\r\n Texture: require('./WebGL/texture.js'),\r\n // TODO: This should not be even exported\r\n webglAtlas: require('./WebGL/webglAtlas.js'),\r\n webglImageNodeProgram: require('./WebGL/webglImageNodeProgram.js'),\r\n webglLinkProgram: require('./WebGL/webglLinkProgram.js'),\r\n webglNodeProgram: require('./WebGL/webglNodeProgram.js'),\r\n webglLine: require('./WebGL/webglLine.js'),\r\n webglSquare: require('./WebGL/webglSquare.js'),\r\n webglImage: require('./WebGL/webglImage.js'),\r\n webglGraphics: require('./View/webglGraphics.js'),\r\n // TODO: Deprecate this:\r\n _webglUtil: {\r\n parseColor: require('./WebGL/parseColor.js')\r\n },\r\n\r\n // TODO: move to svg namespace\r\n svgGraphics: require('./View/svgGraphics.js'),\r\n\r\n renderer: require('./View/renderer.js'),\r\n\r\n // deprecated\r\n cssGraphics: function() {\r\n throw new Error('cssGraphics is deprecated. Please use older version of vivagraph (< 0.7) if you need it');\r\n },\r\n\r\n svgNodeFactory: function() {\r\n throw new Error('svgNodeFactory is deprecated. Please use older version of vivagraph (< 0.7) if you need it');\r\n },\r\n\r\n community: function() {\r\n throw new Error('community is deprecated. Please use vivagraph < 0.7 if you need it, or `https://github.com/anvaka/ngraph.slpa` module');\r\n }\r\n },\r\n\r\n Rect: require('./Utils/rect.js'),\r\n\r\n svg: require('simplesvg'),\r\n\r\n // TODO: should be camelCase\r\n BrowserInfo: require('./Utils/browserInfo.js')\r\n};\r\n\r\nmodule.exports = Viva;\r\n","var map = {\n\t\"./iota-core/themes/dark/banner.svg\": [\n\t\t9733,\n\t\t733\n\t],\n\t\"./iota-core/themes/light/banner.svg\": [\n\t\t913,\n\t\t913\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 1 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 4469;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./iota-core/themes/dark/logo-navigation.svg\": [\n\t\t1751,\n\t\t751\n\t],\n\t\"./iota-core/themes/light/logo-navigation.svg\": [\n\t\t3626,\n\t\t626\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(function() {\n\t\treturn __webpack_require__.t(id, 1 | 16);\n\t});\n}\nwebpackAsyncContext.keys = function() { return Object.keys(map); };\nwebpackAsyncContext.id = 1361;\nmodule.exports = webpackAsyncContext;","var map = {\n\t\"./iota-core/brand.json\": 2304\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 693;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"626\":\"a6cf14e7\",\"733\":\"93bd158b\",\"751\":\"7b6352ab\",\"913\":\"4926f8ec\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"node-dashboard:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/dashboard/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknode_dashboard\"] = self[\"webpackChunknode_dashboard\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n setPrototypeOf(subClass, superClass);\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n return _extends.apply(this, arguments);\n}","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? prefix + \": \" + provided : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","import createNamedContext from \"./createNamedContext\";\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n this._pendingLocation = location;\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this.unlisten) {\n // Any pre-mount location changes have been captured at\n // this point, so unregister the listener.\n this.unlisten();\n }\n if (!this.props.staticContext) {\n this.unlisten = this.props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n }\n });\n }\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) {\n this.unlisten();\n this._isMounted = false;\n this._pendingLocation = null;\n }\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path) {\n if (cache[path]) return cache[path];\n\n const generator = pathToRegexp.compile(path);\n\n if (cacheCount < cacheLimit) {\n cache[path] = generator;\n cacheCount++;\n }\n\n return generator;\n}\n\n/**\n * Public API for generating a URL pathname from a path and parameters.\n */\nfunction generatePath(path = \"/\", params = {}) {\n return path === \"/\" ? path : compilePath(path)(params, { pretty: true });\n}\n\nexport default generatePath;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, locationsAreEqual } from \"history\";\nimport invariant from \"tiny-invariant\";\n\nimport Lifecycle from \"./Lifecycle.js\";\nimport RouterContext from \"./RouterContext.js\";\nimport generatePath from \"./generatePath.js\";\n\n/**\n * The public API for navigating programmatically with a component.\n */\nfunction Redirect({ computedMatch, to, push = false }) {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history, staticContext } = context;\n\n const method = push ? history.push : history.replace;\n const location = createLocation(\n computedMatch\n ? typeof to === \"string\"\n ? generatePath(to, computedMatch.params)\n : {\n ...to,\n pathname: generatePath(to.pathname, computedMatch.params)\n }\n : to\n );\n\n // When rendering in a static context,\n // set the new location immediately.\n if (staticContext) {\n method(location);\n return null;\n }\n\n return (\n {\n method(location);\n }}\n onUpdate={(self, prevProps) => {\n const prevLocation = createLocation(prevProps.to);\n if (\n !locationsAreEqual(prevLocation, {\n ...location,\n key: prevLocation.key\n })\n ) {\n method(location);\n }\n }}\n to={to}\n />\n );\n }}\n \n );\n}\n\nif (__DEV__) {\n Redirect.propTypes = {\n push: PropTypes.bool,\n from: PropTypes.string,\n to: PropTypes.oneOfType([PropTypes.string, PropTypes.object]).isRequired\n };\n}\n\nexport default Redirect;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && isEmptyChildren(children)) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport hoistStatics from \"hoist-non-react-statics\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * A public higher-order component to access the imperative API\n */\nfunction withRouter(Component) {\n const displayName = `withRouter(${Component.displayName || Component.name})`;\n const C = props => {\n const { wrappedComponentRef, ...remainingProps } = props;\n\n return (\n \n {context => {\n invariant(\n context,\n `You should not use <${displayName} /> outside a `\n );\n return (\n \n );\n }}\n \n );\n };\n\n C.displayName = displayName;\n C.WrappedComponent = Component;\n\n if (__DEV__) {\n C.propTypes = {\n wrappedComponentRef: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.object\n ])\n };\n }\n\n return hoistStatics(C, Component);\n}\n\nexport default withRouter;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(RouterContext).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(RouterContext).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(RouterContext).match;\n return path ? matchPath(location.pathname, path) : match;\n}\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport { createPath } from 'history';\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHome = function SvgHome(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 18V6.80002L10 2.00002L2 6.80002V18H6V14.918C6 13.8572 6.42143 12.8397 7.17157 12.0896C7.92172 11.3394 8.93913 10.918 10 10.918C11.0609 10.918 12.0783 11.3394 12.8284 12.0896C13.5786 12.8397 14 13.8572 14 14.918V18H18ZM12 20V14.918C12 14.3876 11.7893 13.8789 11.4142 13.5038C11.0391 13.1287 10.5304 12.918 10 12.918C9.46957 12.918 8.96086 13.1287 8.58579 13.5038C8.21071 13.8789 8 14.3876 8 14.918V20H2C1.46957 20 0.960859 19.7893 0.585786 19.4142C0.210714 19.0391 0 18.5304 0 18L0 6.80002C-3.32274e-06 6.45465 0.0894306 6.11516 0.259593 5.81462C0.429755 5.51407 0.674847 5.26271 0.971 5.08502L8.971 0.285019C9.28183 0.0985175 9.63751 0 10 0C10.3625 0 10.7182 0.0985175 11.029 0.285019L19.029 5.08502C19.3252 5.26271 19.5702 5.51407 19.7404 5.81462C19.9106 6.11516 20 6.45465 20 6.80002V18C20 18.5304 19.7893 19.0391 19.4142 19.4142C19.0391 19.7893 18.5304 20 18 20H12Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHome);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/home.cddfeea549634083903fb255dae8714d.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMoon = function SvgMoon(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m19.49261,11.36231c-0.20411,-0.05103 -0.40822,0 -0.58682,0.12757c-0.66336,0.56131 -1.42878,1.02056 -2.27074,1.32672c-0.79093,0.30617 -1.6584,0.45925 -2.5769,0.45925c-2.06662,0 -3.95465,-0.84196 -5.30689,-2.19419c-1.35224,-1.35224 -2.19419,-3.24026 -2.19419,-5.30689c0,-0.86747 0.15308,-1.70943 0.40822,-2.47485c0.28065,-0.81644 0.68887,-1.55635 1.22467,-2.19419c0.22962,-0.28065 0.1786,-0.68887 -0.10206,-0.9185c-0.1786,-0.12757 -0.38271,-0.1786 -0.58682,-0.12757c-2.16868,0.58682 -4.05671,1.88803 -5.40894,3.62297c-1.30121,1.70943 -2.09214,3.82708 -2.09214,6.14885c0,2.78101 1.12261,5.30689 2.95961,7.14389s4.36287,2.95961 7.14389,2.95961c2.34728,0 4.51596,-0.81644 6.2509,-2.16868c1.76046,-1.37775 3.03615,-3.34232 3.57194,-5.58754c0.12757,-0.38271 -0.07654,-0.7399 -0.43374,-0.81644zm-3.90362,5.3324c-1.47981,1.17364 -3.36783,1.88803 -5.43446,1.88803c-2.42382,0 -4.61801,-0.99504 -6.19987,-2.5769c-1.58186,-1.58186 -2.5769,-3.77605 -2.5769,-6.19987c0,-2.0156 0.66336,-3.8526 1.81149,-5.3324c0.79093,-1.02056 1.78597,-1.86251 2.9341,-2.44933c-0.12757,0.28065 -0.25514,0.56131 -0.35719,0.86747c-0.33168,0.9185 -0.48476,1.88803 -0.48476,2.90858c0,2.42382 0.99504,4.64353 2.5769,6.22539s3.80157,2.5769 6.22539,2.5769c1.07158,0 2.09214,-0.1786 3.03615,-0.53579c0.33168,-0.12757 0.66336,-0.25514 0.96953,-0.40822c-0.61233,1.17364 -1.45429,2.21971 -2.50036,3.03615z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMoon);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/moon.02520db67ef1c88d6308394bfd328eec.svg\";","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPadlockUnlocked = function SvgPadlockUnlocked(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21.87281,24l-12.02632,0c-1.10464,0 -2.00439,-1.009 -2.00439,-2.25l0,-10.5c0,-1.241 0.89975,-2.25 2.00439,-2.25l12.02632,0c1.10464,0 2.00439,1.009 2.00439,2.25l0,10.5c0,1.241 -0.89975,2.25 -2.00439,2.25zm-12.02632,-13.5c-0.36792,0 -0.66813,0.336 -0.66813,0.75l0,10.5c0,0.414 0.30021,0.75 0.66813,0.75l12.02632,0c0.36792,0 0.66813,-0.336 0.66813,-0.75l0,-10.5c0,-0.414 -0.30021,-0.75 -0.66813,-0.75l-12.02632,0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.35526,10.5c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-3.75c0,-2.481 -2.019,-4.5 -4.5,-4.5s-4.5,2.019 -4.5,4.5l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75s-0.75,-0.336 -0.75,-0.75l0,-3.75c0,-3.309 2.691,-6 6,-6s6,2.691 6,6l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15.7193,17c-1.103,0 -2,-0.897 -2,-2s0.897,-2 2,-2s2,0.897 2,2s-0.897,2 -2,2zm0,-2.5c-0.275,0 -0.5,0.224 -0.5,0.5s0.225,0.5 0.5,0.5s0.5,-0.224 0.5,-0.5s-0.225,-0.5 -0.5,-0.5z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15.7193,20c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-2.75c0,-0.414 0.336,-0.75 0.75,-0.75s0.75,0.336 0.75,0.75l0,2.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPadlockUnlocked);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/padlock-unlocked.75e5a880128abbe6315c53b5b3b68cdd.svg\";","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPadlock = function SvgPadlock(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m18.75,24l-13.5,0c-1.24,0 -2.25,-1.009 -2.25,-2.25l0,-10.5c0,-1.241 1.01,-2.25 2.25,-2.25l13.5,0c1.24,0 2.25,1.009 2.25,2.25l0,10.5c0,1.241 -1.01,2.25 -2.25,2.25zm-13.5,-13.5c-0.413,0 -0.75,0.336 -0.75,0.75l0,10.5c0,0.414 0.337,0.75 0.75,0.75l13.5,0c0.413,0 0.75,-0.336 0.75,-0.75l0,-10.5c0,-0.414 -0.337,-0.75 -0.75,-0.75l-13.5,0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.25,10.5c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-3.75c0,-2.481 -2.019,-4.5 -4.5,-4.5s-4.5,2.019 -4.5,4.5l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75s-0.75,-0.336 -0.75,-0.75l0,-3.75c0,-3.309 2.691,-6 6,-6s6,2.691 6,6l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,17c-1.103,0 -2,-0.897 -2,-2s0.897,-2 2,-2s2,0.897 2,2s-0.897,2 -2,2zm0,-2.5c-0.275,0 -0.5,0.224 -0.5,0.5s0.225,0.5 0.5,0.5s0.5,-0.224 0.5,-0.5s-0.225,-0.5 -0.5,-0.5z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,20c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-2.75c0,-0.414 0.336,-0.75 0.75,-0.75s0.75,0.336 0.75,0.75l0,2.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPadlock);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/padlock.5326d93aa17bb9e1a9ecf7fa84281cce.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPeers = function SvgPeers(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.6569 5.62329C7.03439 7.02356 5.63123 8 4 8C1.79086 8 0 6.20914 0 4C0 1.79086 1.79086 0 4 0C6.09134 0 7.80782 1.60496 7.98493 3.65037L12.3431 4.37673C12.9656 2.97645 14.3688 2 16 2C18.2091 2 20 3.79086 20 6C20 8.20914 18.2091 10 16 10C14.9749 10 14.04 9.61443 13.3321 8.9804L7.77815 12.6831C7.88518 12.9902 7.95583 13.3143 7.98493 13.6504L12.3431 14.3767C12.9656 12.9764 14.3688 12 16 12C18.2091 12 20 13.7909 20 16C20 18.2091 18.2091 20 16 20C13.9087 20 12.1922 18.3951 12.0151 16.3497L7.6569 15.6233C7.03439 17.0236 5.63123 18 4 18C1.79086 18 0 16.2091 0 14C0 11.7909 1.79086 10 4 10C5.02504 10 5.96002 10.3856 6.66784 11.0196L12.2218 7.3169C12.1148 7.00981 12.0442 6.68568 12.0151 6.34965L7.6569 5.62329ZM6 4C6 5.10457 5.10457 6 4 6C2.89543 6 2 5.10457 2 4C2 2.89543 2.89543 2 4 2C5.10457 2 6 2.89543 6 4ZM16 8C17.1046 8 18 7.10457 18 6C18 4.89543 17.1046 4 16 4C14.8954 4 14 4.89543 14 6C14 7.10457 14.8954 8 16 8ZM6 14C6 15.1046 5.10457 16 4 16C2.89543 16 2 15.1046 2 14C2 12.8954 2.89543 12 4 12C5.10457 12 6 12.8954 6 14ZM16 18C17.1046 18 18 17.1046 18 16C18 14.8954 17.1046 14 16 14C14.8954 14 14 14.8954 14 16C14 17.1046 14.8954 18 16 18Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPeers);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/peers.a62e2ab119894525f731b60d32f84cf2.svg\";","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgSun = function SvgSun(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m13.48664,6.42723c-0.8956,-0.8956 -2.15997,-1.4751 -3.52971,-1.4751s-2.63411,0.55316 -3.52971,1.4751c-0.8956,0.8956 -1.4751,2.15997 -1.4751,3.52971s0.5795,2.63411 1.4751,3.52971c0.8956,0.8956 2.15997,1.4751 3.52971,1.4751s2.63411,-0.55316 3.52971,-1.4751c0.8956,-0.8956 1.4751,-2.15997 1.4751,-3.52971s-0.55316,-2.63411 -1.4751,-3.52971zm-0.94828,6.11114c-0.65853,0.65853 -1.58047,1.05364 -2.58143,1.05364s-1.9229,-0.39512 -2.58143,-1.05364s-1.05364,-1.58047 -1.05364,-2.58143s0.39512,-1.9229 1.05364,-2.58143s1.58047,-1.05364 2.58143,-1.05364s1.9229,0.39512 2.58143,1.05364s1.05364,1.58047 1.05364,2.58143s-0.39512,1.9229 -1.05364,2.58143z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m19.229,9.27207l-2.02826,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487c0,0.36878 0.31609,0.68487 0.68487,0.68487l2.02826,0c0.36878,0 0.68487,-0.31609 0.68487,-0.68487c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.95694,16.51587c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487l0,2.02826c0,0.36878 0.31609,0.68487 0.68487,0.68487c0.36878,0 0.68487,-0.31609 0.68487,-0.68487l0,-2.02826c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m16.99001,16.04173l-1.44876,-1.44876c-0.23707,-0.26341 -0.68487,-0.26341 -0.94828,0s-0.26341,0.68487 0,0.94828l1.44876,1.44876c0.26341,0.26341 0.68487,0.26341 0.94828,0s0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.95694,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487l0,2.02826c0,0.36878 0.31609,0.68487 0.68487,0.68487c0.36878,0 0.68487,-0.31609 0.68487,-0.68487l0,-2.02826c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.01635,2.92386c-0.26341,-0.26341 -0.68487,-0.26341 -0.94828,0l-1.44876,1.44876c-0.26341,0.26341 -0.26341,0.68487 0,0.94828c0.23707,0.26341 0.68487,0.26341 0.94828,0l1.44876,-1.44876c0.26341,-0.26341 0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m2.71313,9.27207l-2.02826,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487s0.28975,0.68487 0.68487,0.68487l2.02826,0c0.36878,0 0.68487,-0.31609 0.68487,-0.68487c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.29456,14.59297c-0.23707,-0.26341 -0.68487,-0.26341 -0.94828,0l-1.44876,1.44876c-0.26341,0.26341 -0.26341,0.68487 0,0.94828s0.68487,0.26341 0.94828,0l1.44876,-1.44876c0.26341,-0.26341 0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.29456,4.37262l-1.44876,-1.44876c-0.26341,-0.26341 -0.68487,-0.26341 -0.94828,0s-0.26341,0.68487 0,0.94828l1.44876,1.44876c0.26341,0.26341 0.68487,0.26341 0.94828,0s0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgSun);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/sun.b34d19d4622b283d411a5a36eeb87adb.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgVisualizer = function SvgVisualizer(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.694333 17.3063C-1.21567 15.3943 0.952333 10.1263 5.53933 5.53935C10.1263 0.952348 15.3943 -1.21665 17.3063 0.694348C19.2163 2.60635 17.0483 7.87435 12.4613 12.4613C7.87433 17.0483 2.60633 19.2173 0.694333 17.3063ZM2.08033 15.9203C2.89533 16.7363 7.18233 14.9703 11.0773 11.0753C14.9723 7.18035 16.7373 2.89335 15.9223 2.07835C15.1073 1.26235 10.8203 3.02835 6.92533 6.92335C3.03033 10.8183 1.26533 15.1053 2.08033 15.9203ZM5.54033 12.4603C0.952333 7.87435 -1.21667 2.60635 0.694333 0.694348C2.60633 -1.21565 7.87433 0.952348 12.4613 5.53935C17.0483 10.1263 19.2173 15.3943 17.3063 17.3063C15.3943 19.2163 10.1263 17.0483 5.53933 12.4613L5.54033 12.4603ZM6.92533 11.0753C10.8203 14.9703 15.1073 16.7353 15.9223 15.9203C16.7383 15.1053 14.9723 10.8183 11.0773 6.92335C7.18233 3.02835 2.89533 1.26335 2.08033 2.07835C1.26433 2.89335 3.03033 7.18035 6.92533 11.0753ZM9.00033 11.0003C8.4699 11.0003 7.96119 10.7896 7.58612 10.4146C7.21105 10.0395 7.00033 9.53078 7.00033 9.00035C7.00033 8.46992 7.21105 7.96121 7.58612 7.58613C7.96119 7.21106 8.4699 7.00035 9.00033 7.00035C9.53077 7.00035 10.0395 7.21106 10.4145 7.58613C10.7896 7.96121 11.0003 8.46992 11.0003 9.00035C11.0003 9.53078 10.7896 10.0395 10.4145 10.4146C10.0395 10.7896 9.53077 11.0003 9.00033 11.0003Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgVisualizer);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/visualizer.66663d336132c1451c6c07149f519427.svg\";","export enum WebSocketTopic {\n SyncStatus = 0,\n PublicNodeStatus = 1,\n NodeInfoExtended = 2,\n GossipMetrics = 3,\n PeerMetrics = 4,\n NetworkMetrics = 5,\n DatabaseSizeMetric = 6,\n VisualizerVertex = 7,\n VisualizerBlockStateInfo = 8,\n VisualizerTipInfo = 9,\n}\n","/**\n * Factory for creating services.\n */\nexport class ServiceFactory {\n /**\n * Store the service callbacks.\n */\n private static readonly _services: { [name: string]: (serviceName: string) => unknown } = {};\n\n /**\n * Store the created instances.\n */\n private static readonly _instances: { [name: string]: unknown } = {};\n\n /**\n * Register a new service.\n * @param name The name of the service.\n * @param instanceCallback The callback to create an instance.\n */\n public static register(name: string, instanceCallback: (serviceName: string) => unknown): void {\n this._services[name] = instanceCallback;\n }\n\n /**\n * Unregister a service.\n * @param name The name of the service to unregister.\n */\n public static unregister(name: string): void {\n delete this._services[name];\n }\n\n /**\n * Get a service instance.\n * @param name The name of the service to get.\n * @returns An instance of the service.\n */\n public static get(name: string): T {\n if (!this._instances[name] && this._services[name]) {\n this._instances[name] = this._services[name](name);\n }\n return this._instances[name] as T;\n }\n}\n","/**\n * Class to manage event aggregation.\n */\nexport class EventAggregator {\n /**\n * The stored subscriptions.\n */\n private static readonly _subscriptions: {\n [eventName: string]: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [subscriberId: string]: (data: any) => void;\n };\n } = {};\n\n /**\n * Subscribe to an event.\n * @param eventName The name of the event to subscribe to.\n * @param subscriberId The id of the subscriber.\n * @param handler The handle to call on a publish.\n */\n public static subscribe(\n eventName: string,\n subscriberId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (data: any) => void | Promise): void {\n EventAggregator._subscriptions[eventName] ||= {};\n EventAggregator._subscriptions[eventName][subscriberId] = handler;\n }\n\n /**\n * Unsubscribe from an event.\n * @param eventName The name of the event to subscribe to.\n * @param subscriberId The id of the subscriber.\n */\n public static unsubscribe(eventName: string, subscriberId: string): void {\n if (EventAggregator._subscriptions[eventName]) {\n delete EventAggregator._subscriptions[eventName][subscriberId];\n }\n }\n\n /**\n * Publish the event.\n * @param eventName The name of the event to publish.\n * @param data The data to publish with the event.\n */\n public static publish(eventName: string, data?: unknown): void {\n setTimeout(\n () => {\n if (EventAggregator._subscriptions[eventName]) {\n for (const subscriberId in EventAggregator._subscriptions[eventName]) {\n EventAggregator._subscriptions[eventName][subscriberId](data);\n }\n }\n },\n 0);\n }\n}\n","/* eslint-disable @typescript-eslint/no-require-imports */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { IBrandConfiguration } from \"../models/IBrandConfiguration\";\n\nexport class BrandHelper {\n /**\n * The brand id from the environment.\n */\n private static readonly _brandId?: string = process.env.REACT_APP_BRAND_ID;\n\n /**\n * The brand configuration.\n */\n private static _brandConfiguration: IBrandConfiguration;\n\n /**\n * Initialize the branding.\n * @returns The brand configuration.\n */\n public static initialize(): IBrandConfiguration | undefined {\n if (BrandHelper._brandId) {\n BrandHelper._brandConfiguration = require(`../assets/${BrandHelper._brandId}/brand.json`);\n document.title = `${BrandHelper._brandConfiguration.name} Dashboard`;\n\n return BrandHelper._brandConfiguration;\n }\n }\n\n /**\n * Get the configuration.\n * @returns The configuration.\n */\n public static getConfiguration(): IBrandConfiguration {\n return BrandHelper._brandConfiguration;\n }\n\n /**\n * Get the logo for the navigation panel.\n * @param theme The current theme.\n * @returns The navigation panel logo.\n */\n public static async getLogoNavigation(theme: string): Promise {\n const logo = await import(`../assets/${BrandHelper._brandId}/themes/${theme}/logo-navigation.svg`);\n return logo.default;\n }\n\n /**\n * Get the logo for the home page banner.\n * @param theme The current theme.\n * @returns The banner panel logo.\n */\n public static async getBanner(theme: string): Promise {\n const banner = await import(`../assets/${BrandHelper._brandId}/themes/${theme}/banner.svg`);\n return banner.default;\n }\n}\n","import { Component } from \"react\";\n\n/**\n * Base component for component with async requests.\n */\nclass AsyncComponent extends Component {\n /**\n * Is the component mounted.\n */\n protected _isMounted?: boolean;\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._isMounted = true;\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n this._isMounted = false;\n }\n\n /**\n * Set the state if the component is still mounted.\n * @param state The state to set.\n * @param callback The callback for the setState.\n */\n public setState(\n state: ((prevState: Readonly, props: Readonly

) => (Pick | S | null)) | (Pick | S | null),\n callback?: () => void\n ): void {\n if (this._isMounted) {\n super.setState(state, callback);\n }\n }\n}\n\nexport default AsyncComponent;\n","import { Component, ReactNode } from \"react\";\nimport { BreakpointProps } from \"./BreakpointProps\";\nimport { BreakpointState } from \"./BreakpointState\";\n\n/**\n * Component to show/hide children based on media size breakpoints.\n */\nclass Breakpoint extends Component {\n /**\n * The size for the breakpoints.\n */\n private static readonly SIZE_BREAKPOINTS = {\n \"phone\": 480,\n \"tablet\": 768,\n \"desktop\": 1024\n };\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Create a new instance of Breakpoint.\n * @param props The props.\n */\n constructor(props: BreakpointProps) {\n super(props);\n\n this._resize = () => this.resize();\n\n this.state = {\n isVisible: this.calculateVisible()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n window.addEventListener(\"resize\", this._resize);\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return this.state.isVisible\n ? this.props.children\n : null;\n }\n\n /**\n * Handle the window resize.\n */\n private resize(): void {\n const isVisible = this.calculateVisible();\n\n this.setState({\n isVisible\n });\n }\n\n /**\n * Calculate if the child components should be visible.\n * @returns True if the children should be visible.\n */\n private calculateVisible(): boolean {\n const windowSize = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n return this.props.aboveBelow === \"above\"\n ? windowSize >= Breakpoint.SIZE_BREAKPOINTS[this.props.size]\n : windowSize < Breakpoint.SIZE_BREAKPOINTS[this.props.size];\n }\n}\n\nexport default Breakpoint;\n","import humanize from \"humanize-duration\";\nimport moment from \"moment\";\n\n/**\n * Class to help formatting values.\n */\nexport class FormatHelper {\n /**\n * The singleton instance.\n */\n private static instance: FormatHelper;\n\n /**\n * Get the FormatHelper singleton instance.\n * @returns The FormatHelper instance.\n */\n public static getInstance(): FormatHelper {\n if (!FormatHelper.instance) {\n FormatHelper.instance = new FormatHelper();\n }\n\n return FormatHelper.instance;\n }\n\n /**\n * Format the duration as human readable.\n * @param milliseconds The milliseconds total for the duration.\n * @returns The formatted duration.\n */\n public static duration(milliseconds: number): string {\n if (milliseconds < 3600000) {\n return humanize(milliseconds, { largest: 1, round: true });\n }\n\n return humanize(milliseconds, { largest: 2, round: true });\n }\n\n /**\n * Format the bytes to a human readable size. (SI standard)\n * @param bytes The bytes to format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted string.\n */\n public static size(bytes: number, decimalPlaces: number = 2): string {\n if (!bytes) {\n return \"0 bytes\";\n }\n\n const index = Math.floor(Math.log(bytes) / Math.log(1000));\n const units = [\"bytes\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n const value = Number((bytes / Math.pow(1000, index)).toFixed(decimalPlaces));\n let unit = units[index];\n\n if (unit === \"bytes\" && value === 1) {\n unit = \"byte\";\n }\n\n if (unit === undefined) {\n return bytes.toFixed(decimalPlaces).toString();\n }\n\n return `${value} ${unit}`;\n }\n\n /**\n * Format the bytes to a human readable size. (IEC standard)\n * @param bytes The bytes to format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted string.\n */\n public static iSize(bytes: number, decimalPlaces: number = 2): string {\n if (!bytes) {\n return \"0 bytes\";\n }\n\n const index = Math.floor(Math.log(bytes) / Math.log(1024));\n const units = [\"bytes\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n\n const value = Number((bytes / Math.pow(1024, index)).toFixed(decimalPlaces));\n let unit = units[index];\n\n if (unit === \"bytes\" && value === 1) {\n unit = \"byte\";\n }\n\n if (unit === undefined) {\n return bytes.toFixed(decimalPlaces).toString();\n }\n\n return `${value} ${unit}`;\n }\n\n /**\n * Format the date.\n * @param valueInMs The value to format in milliseconds.\n * @param human Humanize the date.\n * @returns The formated value.\n */\n public static date(valueInMs: number, human: boolean = true): string {\n valueInMs = FormatHelper.milliseconds(valueInMs);\n\n const timeMoment = moment(valueInMs);\n let formatted = timeMoment.format(\"LLLL\");\n\n if (human) {\n const postDate = valueInMs > Date.now() ? \"in the future\" : \"ago\";\n\n formatted += ` - ${moment.duration(moment().diff(timeMoment)).humanize()} ${postDate}`;\n }\n return formatted;\n }\n\n /**\n * Format the date in short format.\n * @param valueInMs The value to format in milliseconds.\n * @returns The formated value.\n */\n public static dateShort(valueInMs: number): string {\n return moment(FormatHelper.milliseconds(valueInMs)).format(\"YYYY-MM-DD HH:mm\");\n }\n\n /**\n * Check the value is in ms if not scale accordingly.\n * @param valueInMs The value to format in milliseconds.\n * @returns The updated value.\n */\n public static milliseconds(valueInMs: number): number {\n const asStringLength = valueInMs.toString().length;\n\n // If there are less than 13 digits this must be in seconds\n // https://stackoverflow.com/questions/23929145/how-to-test-if-a-given-time-stamp-is-in-seconds-or-milliseconds\n if (asStringLength < 13) {\n return valueInMs * 1000;\n }\n return valueInMs;\n }\n}\n","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthBad = function SvgHealthBad(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#FF6755\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#FF6755\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthBad);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-bad.f6b3a99f588b20aef147dd8cada3356f.svg\";","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthGood = function SvgHealthGood(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#61E884\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#61E884\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthGood);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-good.c06d31b2b699112b161f07c13711dc20.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgBannerCurve = function SvgBannerCurve(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n style: {\n isolation: \"isolate\"\n },\n viewBox: \"0 0 34 140\",\n width: \"34px\",\n height: \"140px\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \" M 34 140 L 0.02 140 L 0.02 140 C 0.007 138.835 0 137.668 0 136.5 L 0 136.5 C 0 87.365 11.818 40.968 32.765 0 L 34 0 L 34 140 Z \",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgBannerCurve);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/banner-curve.abe8a24f8be162bfc9ff259fbfdaa7d8.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as HealthBadIcon } from \"../../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../../assets/health-good.svg\";\nimport \"./HealthIndicator.scss\";\nimport { HealthIndicatorProps } from \"./HealthIndicatorProps\";\n\n/**\n * Health Indicator.\n */\nclass HealthIndicator extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n

\n {this.props.healthy ? : }\n {this.props.label}\n
\n );\n }\n}\n\nexport default HealthIndicator;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./MicroGraph.scss\";\nimport { MicroGraphProps } from \"./MicroGraphProps\";\nimport { MicroGraphState } from \"./MicroGraphState\";\n\n/**\n * Micro Graph.\n */\nclass MicroGraph extends Component {\n /**\n * The graph width.\n */\n private readonly _graphWidth: number;\n\n /**\n * The graph height.\n */\n private readonly _graphHeight: number;\n\n /**\n * Create a new instance of MicroGraph.\n * @param props The props.\n */\n constructor(props: MicroGraphProps) {\n super(props);\n\n this._graphWidth = this.props.graphWidth ?? 80;\n this._graphHeight = this.props.graphHeight ?? 10;\n\n this.state = {\n ...this.calculateGraph()\n };\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: MicroGraphProps): void {\n if (this.props.values !== prevProps.values) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n {this.props.label}\n {this.props.value}\n \n \n {this.state.graphPoints && this.state.graphPoints.length > 0 && (\n `${g.type} ${g.x} ${g.y}`).join(\" \")}\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n )}\n {this.state.circle && this.state.circle.x >= 0 && (\n \n )}\n \n \n
\n );\n }\n\n /**\n * Calculate the graph points.\n * @returns The graph points.\n */\n private calculateGraph(): {\n graphPoints: {\n type: string;\n x: number;\n y: number;\n }[];\n circle: {\n x: number;\n y: number;\n };\n } {\n const graphPointCount = this._graphWidth / 2;\n\n const lastItems = this.props.values.slice(-graphPointCount);\n let min;\n let max;\n let circleX = -1;\n let circleY = -1;\n\n for (let i = 0; i < lastItems.length; i++) {\n if (min === undefined || lastItems[i] < min) {\n min = lastItems[i];\n }\n if (max === undefined || lastItems[i] > max) {\n max = lastItems[i];\n }\n }\n\n const graphPoints = [];\n if (max !== undefined && min !== undefined) {\n const range = max - min;\n const scale = range === 0 ? 1 : range / this._graphHeight;\n\n let lastY = (lastItems[0] - min) / scale;\n graphPoints.push({\n type: \"M\",\n x: 0,\n y: this._graphHeight - lastY\n });\n\n const xIncrement = (graphPointCount / lastItems.length) * 2;\n for (let i = 1; i < lastItems.length; i++) {\n const y = (lastItems[i] - min) / scale;\n graphPoints.push({\n type: \"l\",\n x: xIncrement,\n y: (y - lastY) * -1\n });\n lastY = y;\n }\n\n circleX = (lastItems.length - 1) * xIncrement;\n circleY = 10 - lastY;\n }\n\n return {\n graphPoints,\n circle: { x: circleX, y: circleY }\n };\n }\n}\n\nexport default MicroGraph;\n","import React, { ReactNode } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IDatabaseSizesMetrics } from \"../../../models/websocket/IDatabaseSizesMetrics\";\nimport { IGossipMetrics } from \"../../../models/websocket/IGossipMetrics\";\nimport { INodeInfoExtended } from \"../../../models/websocket/INodeInfoExtended\";\nimport { IPublicNodeStatus } from \"../../../models/websocket/IPublicNodeStatus\";\nimport { WebSocketTopic } from \"../../../models/websocket/webSocketTopic\";\nimport { AuthService } from \"../../../services/authService\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { MetricsService } from \"../../../services/metricsService\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport AsyncComponent from \"./AsyncComponent\";\nimport Breakpoint from \"./Breakpoint\";\nimport \"./Header.scss\";\nimport { HeaderProps } from \"./HeaderProps\";\nimport { HeaderState } from \"./HeaderState\";\nimport HealthIndicator from \"./HealthIndicator\";\nimport MicroGraph from \"./MicroGraph\";\n\n/**\n * Header panel.\n */\nclass Header extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The node info extended subscription id.\n */\n private _nodeInfoExtendedSubscription?: string;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The database size metrics subscription id.\n */\n private _databaseSizeMetricsSubscription?: string;\n\n /**\n * The gossip metrics subscription id.\n */\n private _gossipMetricsSubscription?: string;\n\n /**\n * Create a new instance of Header.\n * @param props The props.\n */\n constructor(props: RouteComponentProps & HeaderProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n isNetworkHealthy: false,\n isNodeHealthy: false,\n bps: \"-\",\n bpsValues: [],\n memorySizeFormatted: \"-\",\n memorySize: [],\n dbSizeTotalFormatted: \"-\",\n dbSizeTotal: [],\n isLoggedIn: Boolean(this._authService.isLoggedIn()),\n online: false\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n EventAggregator.subscribe(\"auth-state\", \"header\", isLoggedIn => {\n this.setState({\n isLoggedIn\n });\n });\n\n EventAggregator.subscribe(\"online\", \"header\", online => {\n if (online !== this.state.online) {\n this.setState({\n online\n });\n }\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n if (!this.state.online) {\n this.setState({\n online: true\n });\n }\n if (data.isNodeHealthy !== this.state.isNodeHealthy) {\n this.setState({ isNodeHealthy: data.isNodeHealthy });\n }\n if (data.isNetworkHealthy !== this.state.isNetworkHealthy) {\n this.setState({ isNetworkHealthy: data.isNetworkHealthy });\n }\n }\n });\n\n this._nodeInfoExtendedSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeInfoExtended,\n data => {\n if (data) {\n const memorySizeFormatted = FormatHelper.iSize(data.memoryUsage, 1);\n\n if (memorySizeFormatted !== this.state.memorySizeFormatted) {\n this.setState({ memorySizeFormatted });\n }\n }\n },\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n this.setState({\n memorySize: nonNull\n .map(d => d.memoryUsage)\n });\n });\n\n this._databaseSizeMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.DatabaseSizeMetric,\n data => {\n if (data) {\n let dbSizeTotalFormatted = \"-\";\n if (data.databaseSizes.length > 0) {\n dbSizeTotalFormatted = FormatHelper.size(data.databaseSizes[0].total);\n }\n\n if (dbSizeTotalFormatted !== this.state.dbSizeTotalFormatted) {\n this.setState({ dbSizeTotalFormatted });\n }\n }\n },\n allData => {\n const nonNull = allData.filter(d => d?.databaseSizes !== undefined && d?.databaseSizes !== null);\n\n const dbSizeTotalValues = nonNull\n .map(d => d.databaseSizes.map(s => s.total));\n\n const dbSizeTotalFlattened = dbSizeTotalValues.flat();\n\n this.setState({ dbSizeTotal: dbSizeTotalFlattened });\n });\n\n this._gossipMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.GossipMetrics,\n data => {\n if (data) {\n const bpsValues = this.state.bpsValues.slice(-40);\n bpsValues.push(data.new);\n\n let bpsFormatted = \"-\";\n if (bpsValues.length > 0) {\n bpsFormatted = bpsValues[bpsValues.length - 1].toString();\n }\n\n if (bpsFormatted !== this.state.bps) {\n this.setState({ bps: bpsFormatted });\n }\n this.setState({ bpsValues });\n }\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"auth-state\", \"header\");\n EventAggregator.unsubscribe(\"online\", \"header\");\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._nodeInfoExtendedSubscription) {\n this._metricsService.unsubscribe(this._nodeInfoExtendedSubscription);\n this._nodeInfoExtendedSubscription = undefined;\n }\n\n if (this._databaseSizeMetricsSubscription) {\n this._metricsService.unsubscribe(this._databaseSizeMetricsSubscription);\n this._databaseSizeMetricsSubscription = undefined;\n }\n\n if (this._gossipMetricsSubscription) {\n this._metricsService.unsubscribe(this._gossipMetricsSubscription);\n this._gossipMetricsSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n {this.state.online && (\n \n {this.props.children}\n \n \n \n \n \n \n {this.state.isLoggedIn && (\n \n \n \n \n )}\n \n \n )}\n
\n
\n );\n }\n}\n\nexport default withRouter(Header);\n","import React, { Component, ReactNode } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { ThemeService } from \"../../../services/themeService\";\nimport { BrandHelper } from \"../../../utils/brandHelper\";\nimport \"./NavMenu.scss\";\nimport { NavMenuProps } from \"./NavMenuProps\";\nimport { NavMenuState } from \"./NavMenuState\";\n\n/**\n * Navigation menu.\n */\nclass NavMenu extends Component {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * Create a new instance of NavMenu;\n * @param props The props.\n */\n constructor(props: RouteComponentProps & NavMenuProps) {\n super(props);\n\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n logoSrc: \"\",\n isOpen: false\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"navmenu\", async (theme: string) => {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(theme)\n });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n EventAggregator.unsubscribe(\"theme\", \"navmenu\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n this.state.isOpen && this.setState({ isOpen: false })}\n >\n this.setState({ isOpen: !this.state.isOpen })}\n >\n \n \n {this.state.isOpen && (\n
\n {this.props.children}\n
\n )}\n \n );\n }\n}\n\nexport default withRouter(NavMenu);\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { ThemeService } from \"../../../services/themeService\";\nimport { BrandHelper } from \"../../../utils/brandHelper\";\nimport \"./NavPanel.scss\";\nimport { NavPanelProps } from \"./NavPanelProps\";\nimport { NavPanelState } from \"./NavPanelState\";\n\n/**\n * Navigation panel.\n */\nclass NavPanel extends Component {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * Create a new instance of NavPanel;\n * @param props The props.\n */\n constructor(props: RouteComponentProps & NavPanelProps) {\n super(props);\n\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n logoSrc: \"\"\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"navpanel\", async (theme: string) => {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(theme)\n });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n EventAggregator.unsubscribe(\"theme\", \"navpanel\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n \n \n \n\n
\n {this.props.middle.map(b => (\n \n {!b.hidden && b.route && (\n 1 &&\n this.props.location.pathname.startsWith(b.route)) ||\n b.route === this.props.location.pathname\n }\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n {!b.hidden && b.function && (\n b.function?.()}\n className={classNames(\n \"nav-panel--button\"\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n \n ))}\n
\n\n
\n {this.props.end.map(b => (\n \n {!b.hidden && b.route && (\n 1 &&\n this.props.location.pathname.startsWith(b.route)) ||\n b.route === this.props.location.pathname\n }\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n {!b.hidden && b.function && (\n b.function?.()}\n className={classNames(\n \"nav-panel--button\"\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n \n ))}\n
\n
\n );\n }\n}\n\nexport default withRouter(NavPanel);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgConfirmation = function SvgConfirmation(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6569 5.62329C7.03439 7.02356 5.63123 8 4 8C1.79086 8 0 6.20914 0 4C0 1.79086 1.79086 0 4 0C6.09134 0 7.80782 1.60496 7.98493 3.65037L12.3431 4.37673C12.9656 2.97645 14.3688 2 16 2C18.2091 2 20 3.79086 20 6C20 8.20914 18.2091 10 16 10C14.9749 10 14.04 9.61443 13.3321 8.9804L7.77815 12.6831C7.88518 12.9902 7.95583 13.3143 7.98493 13.6504L12.3431 14.3767C12.9656 12.9764 14.3688 12 16 12C18.2091 12 20 13.7909 20 16C20 18.2091 18.2091 20 16 20C13.9087 20 12.1922 18.3951 12.0151 16.3497L7.6569 15.6233C7.03439 17.0236 5.63123 18 4 18C1.79086 18 0 16.2091 0 14C0 11.7909 1.79086 10 4 10C5.02504 10 5.96002 10.3856 6.66784 11.0196L12.2218 7.3169C12.1148 7.00981 12.0442 6.68568 12.0151 6.34965L7.6569 5.62329Z\",\n fill: \"#666AF6\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgConfirmation);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/confirmation.111458925d5e48ea4edcd8448e4c034a.svg\";","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgDbIcon = function SvgDbIcon(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 10.667C22.6274 10.667 28 8.87613 28 6.66699C28 4.45785 22.6274 2.66699 16 2.66699C9.37258 2.66699 4 4.45785 4 6.66699C4 8.87613 9.37258 10.667 16 10.667Z\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 16C28 18.2133 22.6667 20 16 20C9.33333 20 4 18.2133 4 16\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 6.66699V25.3337C4 27.547 9.33333 29.3337 16 29.3337C22.6667 29.3337 28 27.547 28 25.3337V6.66699\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgDbIcon);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/db-icon.0d2bef5e4b057ba24d916a7d190c914b.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMemory = function SvgMemory(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7 1C7 0.447715 7.44772 0 8 0C8.55229 0 9 0.447715 9 1V4H12V1C12 0.447715 12.4477 0 13 0C13.5523 0 14 0.447715 14 1V4H17V1C17 0.447715 17.4477 0 18 0C18.5523 0 19 0.447715 19 1V4.12602C20.4056 4.4878 21.5122 5.59439 21.874 7H25C25.5523 7 26 7.44772 26 8C26 8.55229 25.5523 9 25 9H22V12H25C25.5523 12 26 12.4477 26 13C26 13.5523 25.5523 14 25 14H22V17H25C25.5523 17 26 17.4477 26 18C26 18.5523 25.5523 19 25 19H21.874C21.5122 20.4056 20.4056 21.5122 19 21.874V25C19 25.5523 18.5523 26 18 26C17.4477 26 17 25.5523 17 25V22H14V25C14 25.5523 13.5523 26 13 26C12.4477 26 12 25.5523 12 25V22H9V25C9 25.5523 8.55229 26 8 26C7.44772 26 7 25.5523 7 25V21.874C5.59439 21.5122 4.4878 20.4056 4.12602 19H1C0.447715 19 0 18.5523 0 18C0 17.4477 0.447715 17 1 17H4V14H1C0.447715 14 0 13.5523 0 13C0 12.4477 0.447715 12 1 12H4V9H1C0.447715 9 0 8.55229 0 8C0 7.44772 0.447715 7 1 7H4.12602C4.4878 5.59439 5.59439 4.4878 7 4.12602V1ZM11 9C9.89543 9 9 9.89543 9 11V15C9 16.1046 9.89543 17 11 17H15C16.1046 17 17 16.1046 17 15V11C17 9.89543 16.1046 9 15 9H11Z\",\n fill: \"#666AF6\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMemory);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/memory.85492509c678bfd1d551db28872ea914.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMilestone = function SvgMilestone(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 26,\n viewBox: \"0 0 22 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 0C0.671573 0 0 0.671572 0 1.5V24.5C0 25.3284 0.671573 26 1.5 26C2.32843 26 3 25.3284 3 24.5V17H19C20.6569 17 22 15.6569 22 14V5C22 3.34315 20.6569 2 19 2H3V1.5C3 0.671573 2.32843 0 1.5 0Z\",\n fill: \"#16E1D5\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMilestone);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/milestone.cc04134a7d188f0909d9f23c87a360b2.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPruning = function SvgPruning(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9999 12.8115L9.67454 15.5795C10.3612 16.5407 10.7088 17.703 10.6624 18.8833C10.6161 20.0637 10.1785 21.1951 9.41854 22.0995C8.50834 23.1815 7.20609 23.8582 5.79753 23.9812C4.38897 24.1042 2.98915 23.6634 1.90521 22.7555C1.36875 22.3064 0.926138 21.7558 0.602702 21.1354C0.279265 20.515 0.0813554 19.8368 0.0202999 19.1398C-0.0407557 18.4428 0.0362414 17.7406 0.246884 17.0734C0.457528 16.4062 0.797681 15.7871 1.24788 15.2515C2.0087 14.3467 3.04825 13.72 4.20357 13.4695C5.35889 13.219 6.56467 13.359 7.63188 13.8675L10.2585 10.7395L3.07454 2.18885C2.96202 2.05495 2.87699 1.90019 2.82433 1.7334C2.77166 1.56662 2.7524 1.39109 2.76763 1.21685C2.78286 1.04261 2.83229 0.873089 2.9131 0.717973C2.9939 0.562856 3.10449 0.42519 3.23854 0.31285C3.37266 0.200246 3.52764 0.115165 3.69464 0.0624652C3.86165 0.0097655 4.03739 -0.00952042 4.21185 0.00570882C4.3863 0.0209381 4.55605 0.0703841 4.71139 0.151223C4.86674 0.232062 5.00463 0.342711 5.11721 0.47685L11.9999 8.66885L18.8812 0.47685C18.9938 0.342517 19.1318 0.231703 19.2872 0.150745C19.4427 0.0697879 19.6126 0.0202768 19.7872 0.00504451C19.9618 -0.0101878 20.1377 0.00915768 20.3049 0.0619742C20.472 0.114791 20.6271 0.200042 20.7612 0.31285C20.8953 0.42519 21.0059 0.562856 21.0867 0.717973C21.1675 0.873089 21.2169 1.04261 21.2321 1.21685C21.2474 1.39109 21.2281 1.56662 21.1754 1.7334C21.1228 1.90019 21.0377 2.05495 20.9252 2.18885L13.7399 10.7395L16.3665 13.8662C17.4338 13.3577 18.6395 13.2177 19.7948 13.4682C20.9502 13.7186 21.9897 14.3454 22.7505 15.2502C23.2007 15.7858 23.5409 16.4049 23.7515 17.0721C23.9622 17.7393 24.0392 18.4415 23.9781 19.1385C23.9171 19.8355 23.7192 20.5136 23.3957 21.134C23.0723 21.7545 22.6297 22.305 22.0932 22.7542C21.0093 23.6621 19.6094 24.1029 18.2009 23.9799C16.7923 23.8569 15.4901 23.1802 14.5799 22.0982C13.8199 21.1938 13.3823 20.0624 13.336 18.882C13.2896 17.7016 13.6372 16.5394 14.3239 15.5782L11.9999 12.8115ZM3.61988 20.7142C4.16456 21.1353 4.85102 21.3295 5.53559 21.256C6.22017 21.1825 6.84979 20.8471 7.29269 20.32C7.73559 19.7928 7.95744 19.1148 7.91181 18.4278C7.86618 17.7408 7.55661 17.0981 7.04788 16.6342C6.50587 16.18 5.80581 15.9595 5.10137 16.021C4.39692 16.0825 3.74566 16.421 3.29054 16.9622C2.34388 18.0889 2.49054 19.7689 3.61988 20.7142ZM20.3799 20.7142C20.648 20.4895 20.8692 20.2142 21.0308 19.9039C21.1924 19.5937 21.2912 19.2547 21.3217 18.9062C21.3522 18.5577 21.3136 18.2066 21.2083 17.8731C21.103 17.5395 20.9329 17.23 20.7079 16.9622C20.2528 16.4214 19.6018 16.0832 18.8977 16.0217C18.1936 15.9602 17.4938 16.1805 16.9519 16.6342C16.6837 16.8588 16.4624 17.134 16.3007 17.4442C16.1389 17.7544 16.0399 18.0934 16.0093 18.4419C15.9788 18.7904 16.0172 19.1415 16.1224 19.4751C16.2276 19.8087 16.3976 20.1183 16.6225 20.3862C17.5692 21.5129 19.2519 21.6595 20.3799 20.7142Z\",\n fill: \"#FF8B5C\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPruning);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/pruning.eef4ee1560b2a068145ffad5bbbf6250.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgUptime = function SvgUptime(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13 26C20.1797 26 26 20.1797 26 13C26 5.8203 20.1797 0 13 0C5.8203 0 0 5.8203 0 13C0 20.1797 5.8203 26 13 26ZM12 5C12 4.44772 12.4477 4 13 4C13.5523 4 14 4.44772 14 5V12H19C19.5523 12 20 12.4477 20 13C20 13.5523 19.5523 14 19 14H13C12.4477 14 12 13.5523 12 13V5Z\",\n fill: \"#4CAAFF\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgUptime);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/uptime.a9b43f0965de14ce059205f56a3eb6da.svg\";","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/* eslint-disable array-bracket-newline */\r\n/**\r\n * Class to help with Bech32 encoding/decoding.\r\n * Based on reference implementation https://github.com/sipa/bech32/blob/master/ref/javascript/bech32.js.\r\n */\r\nexport class Bech32 {\r\n /**\r\n * Encode the buffer.\r\n * @param humanReadablePart The header.\r\n * @param data The data to encode.\r\n * @returns The encoded data.\r\n */\r\n static encode(humanReadablePart, data) {\r\n return Bech32.encode5BitArray(humanReadablePart, Bech32.to5Bit(data));\r\n }\r\n /**\r\n * Encode the 5 bit data buffer.\r\n * @param humanReadablePart The header.\r\n * @param data5Bit The data to encode.\r\n * @returns The encoded data.\r\n */\r\n static encode5BitArray(humanReadablePart, data5Bit) {\r\n const checksum = Bech32.createChecksum(humanReadablePart, data5Bit);\r\n let ret = `${humanReadablePart}${Bech32.SEPARATOR}`;\r\n for (let i = 0; i < data5Bit.length; i++) {\r\n ret += Bech32.CHARSET.charAt(data5Bit[i]);\r\n }\r\n for (let i = 0; i < checksum.length; i++) {\r\n ret += Bech32.CHARSET.charAt(checksum[i]);\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Decode a bech32 string.\r\n * @param bech The text to decode.\r\n * @returns The decoded data or undefined if it could not be decoded.\r\n */\r\n static decode(bech) {\r\n const result = Bech32.decodeTo5BitArray(bech);\r\n return result\r\n ? {\r\n humanReadablePart: result.humanReadablePart,\r\n data: Bech32.from5Bit(result.data)\r\n }\r\n : undefined;\r\n }\r\n /**\r\n * Decode a bech32 string to 5 bit array.\r\n * @param bech The text to decode.\r\n * @returns The decoded data or undefined if it could not be decoded.\r\n */\r\n static decodeTo5BitArray(bech) {\r\n bech = bech.toLowerCase();\r\n const separatorPos = bech.lastIndexOf(Bech32.SEPARATOR);\r\n if (separatorPos === -1) {\r\n throw new Error(`There is no separator character ${Bech32.SEPARATOR} in the data`);\r\n }\r\n if (separatorPos < 1) {\r\n throw new Error(`The separator position is ${separatorPos}, which is too early in the string`);\r\n }\r\n if (separatorPos + 7 > bech.length) {\r\n throw new Error(`The separator position is ${separatorPos}, which doesn't leave enough space for data`);\r\n }\r\n const data = new Uint8Array(bech.length - separatorPos - 1);\r\n let idx = 0;\r\n for (let i = separatorPos + 1; i < bech.length; i++) {\r\n const d = Bech32.CHARSET.indexOf(bech.charAt(i));\r\n if (d === -1) {\r\n throw new Error(`Data contains characters not in the charset ${bech.charAt(i)}`);\r\n }\r\n data[idx++] = Bech32.CHARSET.indexOf(bech.charAt(i));\r\n }\r\n const humanReadablePart = bech.slice(0, separatorPos);\r\n if (!Bech32.verifyChecksum(humanReadablePart, data)) {\r\n return;\r\n }\r\n return { humanReadablePart, data: data.slice(0, -6) };\r\n }\r\n /**\r\n * Convert the input bytes into 5 bit data.\r\n * @param bytes The bytes to convert.\r\n * @returns The data in 5 bit form.\r\n */\r\n static to5Bit(bytes) {\r\n return Bech32.convertBits(bytes, 8, 5, true);\r\n }\r\n /**\r\n * Convert the 5 bit data to 8 bit.\r\n * @param fiveBit The 5 bit data to convert.\r\n * @returns The 5 bit data converted to 8 bit.\r\n */\r\n static from5Bit(fiveBit) {\r\n return Bech32.convertBits(fiveBit, 5, 8, false);\r\n }\r\n /**\r\n * Does the given string match the bech32 pattern.\r\n * @param humanReadablePart The human readable part.\r\n * @param bech32Text The text to test.\r\n * @returns True if this is potentially a match.\r\n */\r\n static matches(humanReadablePart, bech32Text) {\r\n if (!bech32Text) {\r\n return false;\r\n }\r\n const regEx = new RegExp(`^${humanReadablePart}1[${Bech32.CHARSET}]{6,}$`);\r\n return regEx.test(bech32Text);\r\n }\r\n /**\r\n * Create the checksum from the human redable part and the data.\r\n * @param humanReadablePart The human readable part.\r\n * @param data The data.\r\n * @returns The checksum.\r\n * @internal\r\n */\r\n static createChecksum(humanReadablePart, data) {\r\n const expanded = Bech32.humanReadablePartExpand(humanReadablePart);\r\n const values = new Uint8Array(expanded.length + data.length + 6);\r\n values.set(expanded, 0);\r\n values.set(data, expanded.length);\r\n values.set([0, 0, 0, 0, 0, 0], expanded.length + data.length);\r\n const mod = Bech32.polymod(values) ^ 1;\r\n const ret = new Uint8Array(6);\r\n for (let i = 0; i < 6; i++) {\r\n ret[i] = (mod >> (5 * (5 - i))) & 31;\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Verify the checksum given the humarn readable part and data.\r\n * @param humanReadablePart The human redable part to validate the checksum.\r\n * @param data The data to validate the checksum.\r\n * @returns True if the checksum was verified.\r\n * @internal\r\n */\r\n static verifyChecksum(humanReadablePart, data) {\r\n const expanded = Bech32.humanReadablePartExpand(humanReadablePart);\r\n const values = new Uint8Array(expanded.length + data.length);\r\n values.set(expanded, 0);\r\n values.set(data, expanded.length);\r\n return Bech32.polymod(values) === 1;\r\n }\r\n /**\r\n * Calculate the polymod of the values.\r\n * @param values The values to calculate the polymod for.\r\n * @returns The polymod of the values.\r\n * @internal\r\n */\r\n static polymod(values) {\r\n let chk = 1;\r\n for (let p = 0; p < values.length; p++) {\r\n const top = chk >> 25;\r\n chk = ((chk & 0x1ffffff) << 5) ^ values[p];\r\n for (let i = 0; i < 5; ++i) {\r\n if ((top >> i) & 1) {\r\n chk ^= Bech32.GENERATOR[i];\r\n }\r\n }\r\n }\r\n return chk;\r\n }\r\n /**\r\n * Expand the human readable part.\r\n * @param humanReadablePart The human readable part to expand.\r\n * @returns The expanded human readable part.\r\n * @internal\r\n */\r\n static humanReadablePartExpand(humanReadablePart) {\r\n const ret = new Uint8Array(humanReadablePart.length * 2 + 1);\r\n let idx = 0;\r\n for (let i = 0; i < humanReadablePart.length; i++) {\r\n ret[idx++] = humanReadablePart.charCodeAt(i) >> 5;\r\n }\r\n ret[idx++] = 0;\r\n for (let i = 0; i < humanReadablePart.length; i++) {\r\n ret[idx++] = humanReadablePart.charCodeAt(i) & 31;\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Convert input data from one bit resolution to another.\r\n * @param data The data to convert.\r\n * @param fromBits The resolution of the input data.\r\n * @param toBits The required resolution of the output data.\r\n * @param padding Include padding in the output.\r\n * @returns The converted data,\r\n * @internal\r\n */\r\n static convertBits(data, fromBits, toBits, padding) {\r\n let value = 0;\r\n let bits = 0;\r\n const maxV = (1 << toBits) - 1;\r\n const res = [];\r\n for (let i = 0; i < data.length; i++) {\r\n value = (value << fromBits) | data[i];\r\n bits += fromBits;\r\n while (bits >= toBits) {\r\n bits -= toBits;\r\n res.push((value >> bits) & maxV);\r\n }\r\n }\r\n if (padding) {\r\n if (bits > 0) {\r\n res.push((value << (toBits - bits)) & maxV);\r\n }\r\n }\r\n else {\r\n if (bits >= fromBits) {\r\n throw new Error(\"Excess padding\");\r\n }\r\n if ((value << (toBits - bits)) & maxV) {\r\n throw new Error(\"Non-zero padding\");\r\n }\r\n }\r\n return new Uint8Array(res);\r\n }\r\n}\r\n/**\r\n * The alphabet to use.\r\n * @internal\r\n */\r\nBech32.CHARSET = \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\";\r\n/**\r\n * The separator between human readable part and data.\r\n * @internal\r\n */\r\nBech32.SEPARATOR = \"1\";\r\n/**\r\n * The generator constants;\r\n * @internal\r\n */\r\nBech32.GENERATOR = Uint32Array.from([\r\n 0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3\r\n]);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/**\r\n * Class to help with Blake2B Signature scheme.\r\n * TypeScript conversion from https://github.com/dcposch/blakejs.\r\n */\r\nexport class Blake2b {\r\n /**\r\n * Create a new instance of Blake2b.\r\n * @param outlen Output length between 1 and 64 bytes.\r\n * @param key Optional key.\r\n */\r\n constructor(outlen, key) {\r\n this._v = new Uint32Array(32);\r\n this._m = new Uint32Array(32);\r\n this._context = {\r\n b: new Uint8Array(128),\r\n h: new Uint32Array(16),\r\n t: 0,\r\n c: 0,\r\n outlen // output length in bytes\r\n };\r\n this.init(outlen, key);\r\n }\r\n /**\r\n * Perform Sum 256 on the data.\r\n * @param data The data to operate on.\r\n * @param key Optional key for the hash.\r\n * @returns The sum 256 of the data.\r\n */\r\n static sum256(data, key) {\r\n const b2b = new Blake2b(Blake2b.SIZE_256, key);\r\n b2b.update(data);\r\n return b2b.final();\r\n }\r\n /**\r\n * Perform Sum 512 on the data.\r\n * @param data The data to operate on.\r\n * @param key Optional key for the hash.\r\n * @returns The sum 512 of the data.\r\n */\r\n static sum512(data, key) {\r\n const b2b = new Blake2b(Blake2b.SIZE_512, key);\r\n b2b.update(data);\r\n return b2b.final();\r\n }\r\n /**\r\n * Updates a BLAKE2b streaming hash.\r\n * @param input The data to hash.\r\n */\r\n update(input) {\r\n for (let i = 0; i < input.length; i++) {\r\n if (this._context.c === 128) {\r\n // buffer full ?\r\n this._context.t += this._context.c; // add counters\r\n this.compress(false); // compress (not last)\r\n this._context.c = 0; // counter to zero\r\n }\r\n this._context.b[this._context.c++] = input[i];\r\n }\r\n }\r\n /**\r\n * Completes a BLAKE2b streaming hash.\r\n * @returns The final data.\r\n */\r\n final() {\r\n this._context.t += this._context.c; // mark last block offset\r\n while (this._context.c < 128) {\r\n // fill up with zeros\r\n this._context.b[this._context.c++] = 0;\r\n }\r\n this.compress(true); // final block flag = 1\r\n // little endian convert and store\r\n const out = new Uint8Array(this._context.outlen);\r\n for (let i = 0; i < this._context.outlen; i++) {\r\n out[i] = this._context.h[i >> 2] >> (8 * (i & 3));\r\n }\r\n return out;\r\n }\r\n /**\r\n * Creates a BLAKE2b hashing context.\r\n * @param outlen Output length between 1 and 64 bytes.\r\n * @param key Optional key.\r\n * @returns The initialized context.\r\n * @internal\r\n */\r\n init(outlen, key) {\r\n if (outlen <= 0 || outlen > 64) {\r\n throw new Error(\"Illegal output length, expected 0 < length <= 64\");\r\n }\r\n if (key && key.length > 64) {\r\n throw new Error(\"Illegal key, expected Uint8Array with 0 < length <= 64\");\r\n }\r\n // initialize hash state\r\n for (let i = 0; i < 16; i++) {\r\n this._context.h[i] = Blake2b.BLAKE2B_IV32[i];\r\n }\r\n const keylen = key ? key.length : 0;\r\n this._context.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen;\r\n // key the hash, if applicable\r\n if (key) {\r\n this.update(key);\r\n // at the end\r\n this._context.c = 128;\r\n }\r\n }\r\n /**\r\n * Compression.\r\n * Note we're representing 16 uint64s as 32 uint32s\r\n * @param last Is this the last block.\r\n * @internal\r\n */\r\n compress(last) {\r\n let i = 0;\r\n // init work variables\r\n for (i = 0; i < 16; i++) {\r\n this._v[i] = this._context.h[i];\r\n this._v[i + 16] = Blake2b.BLAKE2B_IV32[i];\r\n }\r\n // low 64 bits of offset\r\n this._v[24] ^= this._context.t;\r\n this._v[25] ^= this._context.t / 0x100000000;\r\n // high 64 bits not supported, offset may not be higher than 2**53-1\r\n // last block flag set ?\r\n if (last) {\r\n this._v[28] = ~this._v[28];\r\n this._v[29] = ~this._v[29];\r\n }\r\n // get little-endian words\r\n for (i = 0; i < 32; i++) {\r\n this._m[i] = this.b2bGet32(this._context.b, 4 * i);\r\n }\r\n // twelve rounds of mixing\r\n for (i = 0; i < 12; i++) {\r\n this.b2bG(0, 8, 16, 24, Blake2b.SIGMA82[i * 16 + 0], Blake2b.SIGMA82[i * 16 + 1]);\r\n this.b2bG(2, 10, 18, 26, Blake2b.SIGMA82[i * 16 + 2], Blake2b.SIGMA82[i * 16 + 3]);\r\n this.b2bG(4, 12, 20, 28, Blake2b.SIGMA82[i * 16 + 4], Blake2b.SIGMA82[i * 16 + 5]);\r\n this.b2bG(6, 14, 22, 30, Blake2b.SIGMA82[i * 16 + 6], Blake2b.SIGMA82[i * 16 + 7]);\r\n this.b2bG(0, 10, 20, 30, Blake2b.SIGMA82[i * 16 + 8], Blake2b.SIGMA82[i * 16 + 9]);\r\n this.b2bG(2, 12, 22, 24, Blake2b.SIGMA82[i * 16 + 10], Blake2b.SIGMA82[i * 16 + 11]);\r\n this.b2bG(4, 14, 16, 26, Blake2b.SIGMA82[i * 16 + 12], Blake2b.SIGMA82[i * 16 + 13]);\r\n this.b2bG(6, 8, 18, 28, Blake2b.SIGMA82[i * 16 + 14], Blake2b.SIGMA82[i * 16 + 15]);\r\n }\r\n for (i = 0; i < 16; i++) {\r\n this._context.h[i] = this._context.h[i] ^ this._v[i] ^ this._v[i + 16];\r\n }\r\n }\r\n /**\r\n * 64-bit unsigned addition\r\n * Sets v[a,a+1] += v[b,b+1]\r\n * @param v The array.\r\n * @param a The a index.\r\n * @param b The b index.\r\n * @internal\r\n */\r\n add64AA(v, a, b) {\r\n const o0 = v[a] + v[b];\r\n let o1 = v[a + 1] + v[b + 1];\r\n if (o0 >= 0x100000000) {\r\n o1++;\r\n }\r\n v[a] = o0;\r\n v[a + 1] = o1;\r\n }\r\n /**\r\n * 64-bit unsigned addition.\r\n * Sets v[a,a+1] += b.\r\n * @param v The array of data to work on.\r\n * @param a The index to use.\r\n * @param b0 Is the low 32 bits.\r\n * @param b1 Represents the high 32 bits.\r\n * @internal\r\n */\r\n add64AC(v, a, b0, b1) {\r\n let o0 = v[a] + b0;\r\n if (b0 < 0) {\r\n o0 += 0x100000000;\r\n }\r\n let o1 = v[a + 1] + b1;\r\n if (o0 >= 0x100000000) {\r\n o1++;\r\n }\r\n v[a] = o0;\r\n v[a + 1] = o1;\r\n }\r\n /**\r\n * Little endian read byte 32;\r\n * @param arr The array to read from .\r\n * @param i The index to start reading from.\r\n * @returns The value.\r\n * @internal\r\n */\r\n b2bGet32(arr, i) {\r\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24);\r\n }\r\n /**\r\n * G Mixing function.\r\n * The ROTRs are inlined for speed.\r\n * @param a The a value.\r\n * @param b The b value.\r\n * @param c The c value.\r\n * @param d The d value.\r\n * @param ix The ix value.\r\n * @param iy The iy value.\r\n * @internal\r\n */\r\n b2bG(a, b, c, d, ix, iy) {\r\n const x0 = this._m[ix];\r\n const x1 = this._m[ix + 1];\r\n const y0 = this._m[iy];\r\n const y1 = this._m[iy + 1];\r\n this.add64AA(this._v, a, b); // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\r\n this.add64AC(this._v, a, x0, x1); // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\r\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\r\n let xor0 = this._v[d] ^ this._v[a];\r\n let xor1 = this._v[d + 1] ^ this._v[a + 1];\r\n this._v[d] = xor1;\r\n this._v[d + 1] = xor0;\r\n this.add64AA(this._v, c, d);\r\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\r\n xor0 = this._v[b] ^ this._v[c];\r\n xor1 = this._v[b + 1] ^ this._v[c + 1];\r\n this._v[b] = (xor0 >>> 24) ^ (xor1 << 8);\r\n this._v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8);\r\n this.add64AA(this._v, a, b);\r\n this.add64AC(this._v, a, y0, y1);\r\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\r\n xor0 = this._v[d] ^ this._v[a];\r\n xor1 = this._v[d + 1] ^ this._v[a + 1];\r\n this._v[d] = (xor0 >>> 16) ^ (xor1 << 16);\r\n this._v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16);\r\n this.add64AA(this._v, c, d);\r\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\r\n xor0 = this._v[b] ^ this._v[c];\r\n xor1 = this._v[b + 1] ^ this._v[c + 1];\r\n this._v[b] = (xor1 >>> 31) ^ (xor0 << 1);\r\n this._v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1);\r\n }\r\n}\r\n/**\r\n * Blake2b 256.\r\n */\r\nBlake2b.SIZE_256 = 32;\r\n/**\r\n * Blake2b 512.\r\n */\r\nBlake2b.SIZE_512 = 64;\r\n/**\r\n * Initialization Vector.\r\n * @internal\r\n */\r\nBlake2b.BLAKE2B_IV32 = new Uint32Array([\r\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a, 0xade682d1,\r\n 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\r\n]);\r\n/**\r\n * Initialization Vector.\r\n * @internal\r\n */\r\nBlake2b.SIGMA8 = [\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, 11,\r\n 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5,\r\n 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9, 12, 5, 1, 15,\r\n 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11,\r\n 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0, 1, 2, 3, 4, 5, 6,\r\n 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\r\n];\r\n/**\r\n * These are offsets into a uint64 buffer.\r\n * Multiply them all by 2 to make them offsets into a uint32 buffer,\r\n * because this is Javascript and we don't have uint64s\r\n * @internal\r\n */\r\nBlake2b.SIGMA82 = new Uint8Array(Blake2b.SIGMA8.map(x => x * 2));\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to implement Curl sponge.\r\n */\r\nexport class Curl {\r\n /**\r\n * Create a new instance of Curl.\r\n * @param rounds The number of rounds to perform.\r\n */\r\n constructor(rounds = Curl.NUMBER_OF_ROUNDS) {\r\n if (rounds !== 27 && rounds !== 81) {\r\n throw new Error(\"Illegal number of rounds. Only `27` and `81` rounds are supported.\");\r\n }\r\n this._state = new Int8Array(Curl.STATE_LENGTH);\r\n this._rounds = rounds;\r\n }\r\n /**\r\n * Sponge transform function.\r\n * @param curlState The curl state to transform.\r\n * @param rounds The number of rounds to use.\r\n */\r\n static transform(curlState, rounds) {\r\n let stateCopy;\r\n let index = 0;\r\n for (let round = 0; round < rounds; round++) {\r\n stateCopy = curlState.slice();\r\n for (let i = 0; i < Curl.STATE_LENGTH; i++) {\r\n const lastVal = stateCopy[index];\r\n if (index < 365) {\r\n index += 364;\r\n }\r\n else {\r\n index -= 365;\r\n }\r\n const nextVal = stateCopy[index] << 2;\r\n curlState[i] = Curl.TRUTH_TABLE[lastVal + nextVal + 5];\r\n }\r\n }\r\n }\r\n /**\r\n * Resets the state.\r\n */\r\n reset() {\r\n this._state = new Int8Array(Curl.STATE_LENGTH);\r\n }\r\n /**\r\n * Get the state of the sponge.\r\n * @param len The length of the state to get.\r\n * @returns The state.\r\n */\r\n rate(len = Curl.HASH_LENGTH) {\r\n return this._state.slice(0, len);\r\n }\r\n /**\r\n * Absorbs trits given an offset and length.\r\n * @param trits The trits to absorb.\r\n * @param offset The offset to start abororbing from the array.\r\n * @param length The length of trits to absorb.\r\n */\r\n absorb(trits, offset, length) {\r\n do {\r\n const limit = length < Curl.HASH_LENGTH ? length : Curl.HASH_LENGTH;\r\n this._state.set(trits.subarray(offset, offset + limit));\r\n Curl.transform(this._state, this._rounds);\r\n length -= Curl.HASH_LENGTH;\r\n offset += limit;\r\n } while (length > 0);\r\n }\r\n /**\r\n * Squeezes trits given an offset and length.\r\n * @param trits The trits to squeeze.\r\n * @param offset The offset to start squeezing from the array.\r\n * @param length The length of trits to squeeze.\r\n */\r\n squeeze(trits, offset, length) {\r\n do {\r\n const limit = length < Curl.HASH_LENGTH ? length : Curl.HASH_LENGTH;\r\n trits.set(this._state.subarray(0, limit), offset);\r\n Curl.transform(this._state, this._rounds);\r\n length -= Curl.HASH_LENGTH;\r\n offset += limit;\r\n } while (length > 0);\r\n }\r\n}\r\n/**\r\n * The Hash Length.\r\n */\r\nCurl.HASH_LENGTH = 243;\r\n/**\r\n * The State Length.\r\n */\r\nCurl.STATE_LENGTH = 3 * Curl.HASH_LENGTH;\r\n/**\r\n * The default number of rounds.\r\n * @internal\r\n */\r\nCurl.NUMBER_OF_ROUNDS = 81;\r\n/**\r\n * Truth Table.\r\n * @internal\r\n */\r\nCurl.TRUTH_TABLE = [1, 0, -1, 2, 1, -1, 0, 2, -1, 1, 0];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to help with Sha1 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha1.\r\n * Although this algorithm should not be use in most cases, it is the\r\n * default and most widely support for generating TOTP/HOTP codes.\r\n */\r\nexport class Sha1 {\r\n /**\r\n * Create a new instance of Sha1.\r\n */\r\n constructor() {\r\n /**\r\n * Blocks.\r\n * @internal\r\n */\r\n this.blocks = [];\r\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n this.h0 = 0x67452301;\r\n this.h1 = 0xefcdab89;\r\n this.h2 = 0x98badcfe;\r\n this.h3 = 0x10325476;\r\n this.h4 = 0xc3d2e1f0;\r\n this.block = 0;\r\n this.start = 0;\r\n this.bytes = 0;\r\n this.hBytes = 0;\r\n this.lastByteIndex = 0;\r\n this.finalized = false;\r\n this.hashed = false;\r\n this.first = true;\r\n }\r\n /**\r\n * Perform Sum on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum of the data.\r\n */\r\n static sum(data) {\r\n const b2b = new Sha1();\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n * @throws Error if the hash has already been finalized.\r\n */\r\n update(message) {\r\n if (this.finalized) {\r\n throw new Error(\"The hash has already been finalized.\");\r\n }\r\n let index = 0;\r\n let i;\r\n const length = message.length;\r\n const blocks = this.blocks;\r\n while (index < length) {\r\n if (this.hashed) {\r\n this.hashed = false;\r\n blocks[0] = this.block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n for (i = this.start; index < length && i < 64; ++index) {\r\n blocks[i >> 2] |= message[index] << Sha1._SHIFT[i++ & 3];\r\n }\r\n this.lastByteIndex = i;\r\n this.bytes += i - this.start;\r\n if (i >= 64) {\r\n this.block = blocks[16];\r\n this.start = i - 64;\r\n this.hash();\r\n this.hashed = true;\r\n }\r\n else {\r\n this.start = i;\r\n }\r\n }\r\n if (this.bytes > 4294967295) {\r\n this.hBytes += Math.trunc(this.bytes / 4294967296);\r\n this.bytes %= 4294967296;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n this.finalize();\r\n const h0 = this.h0;\r\n const h1 = this.h1;\r\n const h2 = this.h2;\r\n const h3 = this.h3;\r\n const h4 = this.h4;\r\n return Uint8Array.from([\r\n (h0 >> 24) & 0xff,\r\n (h0 >> 16) & 0xff,\r\n (h0 >> 8) & 0xff,\r\n h0 & 0xff,\r\n (h1 >> 24) & 0xff,\r\n (h1 >> 16) & 0xff,\r\n (h1 >> 8) & 0xff,\r\n h1 & 0xff,\r\n (h2 >> 24) & 0xff,\r\n (h2 >> 16) & 0xff,\r\n (h2 >> 8) & 0xff,\r\n h2 & 0xff,\r\n (h3 >> 24) & 0xff,\r\n (h3 >> 16) & 0xff,\r\n (h3 >> 8) & 0xff,\r\n h3 & 0xff,\r\n (h4 >> 24) & 0xff,\r\n (h4 >> 16) & 0xff,\r\n (h4 >> 8) & 0xff,\r\n h4 & 0xff\r\n ]);\r\n }\r\n /**\r\n * Finalize the hash.\r\n * @internal\r\n */\r\n finalize() {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n const blocks = this.blocks;\r\n const i = this.lastByteIndex;\r\n blocks[16] = this.block;\r\n blocks[i >> 2] |= Sha1._EXTRA[i & 3];\r\n this.block = blocks[16];\r\n if (i >= 56) {\r\n if (!this.hashed) {\r\n this.hash();\r\n }\r\n blocks[0] = this.block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n blocks[14] = (this.hBytes << 3) | (this.bytes >>> 29);\r\n blocks[15] = this.bytes << 3;\r\n this.hash();\r\n }\r\n /**\r\n * Perform the hash.\r\n * @internal\r\n */\r\n hash() {\r\n let a = this.h0;\r\n let b = this.h1;\r\n let c = this.h2;\r\n let d = this.h3;\r\n let e = this.h4;\r\n let f;\r\n let j;\r\n let t;\r\n const blocks = this.blocks;\r\n for (j = 16; j < 80; ++j) {\r\n t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\r\n blocks[j] = (t << 1) | (t >>> 31);\r\n }\r\n for (j = 0; j < 20; j += 5) {\r\n f = (b & c) | (~b & d);\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e + 1518500249 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = (a & b) | (~a & c);\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d + 1518500249 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = (e & a) | (~e & b);\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c + 1518500249 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = (d & e) | (~d & a);\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b + 1518500249 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = (c & d) | (~c & e);\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a + 1518500249 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n for (; j < 40; j += 5) {\r\n f = b ^ c ^ d;\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e + 1859775393 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = a ^ b ^ c;\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d + 1859775393 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = e ^ a ^ b;\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c + 1859775393 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = d ^ e ^ a;\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b + 1859775393 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = c ^ d ^ e;\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a + 1859775393 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n for (; j < 60; j += 5) {\r\n f = (b & c) | (b & d) | (c & d);\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e - 1894007588 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = (a & b) | (a & c) | (b & c);\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d - 1894007588 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = (e & a) | (e & b) | (a & b);\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c - 1894007588 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = (d & e) | (d & a) | (e & a);\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b - 1894007588 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = (c & d) | (c & e) | (d & e);\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a - 1894007588 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n for (; j < 80; j += 5) {\r\n f = b ^ c ^ d;\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e - 899497514 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = a ^ b ^ c;\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d - 899497514 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = e ^ a ^ b;\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c - 899497514 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = d ^ e ^ a;\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b - 899497514 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = c ^ d ^ e;\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a - 899497514 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n this.h0 = Math.trunc(this.h0 + a);\r\n this.h1 = Math.trunc(this.h1 + b);\r\n this.h2 = Math.trunc(this.h2 + c);\r\n this.h3 = Math.trunc(this.h3 + d);\r\n this.h4 = Math.trunc(this.h4 + e);\r\n }\r\n}\r\n/**\r\n * Extra constants.\r\n * @internal\r\n */\r\nSha1._EXTRA = [-2147483648, 8388608, 32768, 128];\r\n/**\r\n * Shift constants.\r\n * @internal\r\n */\r\nSha1._SHIFT = [24, 16, 8, 0];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable unicorn/prefer-math-trunc */\r\n/**\r\n * Class to help with Sha256 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha256.\r\n */\r\nexport class Sha256 {\r\n /**\r\n * Create a new instance of Sha256.\r\n * @param bits The number of bits.\r\n */\r\n constructor(bits = Sha256.SIZE_256) {\r\n /**\r\n * Blocks.\r\n * @internal\r\n */\r\n this._blocks = [];\r\n if (bits !== Sha256.SIZE_224 && bits !== Sha256.SIZE_256) {\r\n throw new Error(\"Only 224 or 256 bits are supported\");\r\n }\r\n this._blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n if (bits === Sha256.SIZE_224) {\r\n this._h0 = 0xc1059ed8;\r\n this._h1 = 0x367cd507;\r\n this._h2 = 0x3070dd17;\r\n this._h3 = 0xf70e5939;\r\n this._h4 = 0xffc00b31;\r\n this._h5 = 0x68581511;\r\n this._h6 = 0x64f98fa7;\r\n this._h7 = 0xbefa4fa4;\r\n }\r\n else {\r\n this._h0 = 0x6a09e667;\r\n this._h1 = 0xbb67ae85;\r\n this._h2 = 0x3c6ef372;\r\n this._h3 = 0xa54ff53a;\r\n this._h4 = 0x510e527f;\r\n this._h5 = 0x9b05688c;\r\n this._h6 = 0x1f83d9ab;\r\n this._h7 = 0x5be0cd19;\r\n }\r\n this._bits = bits;\r\n this._block = 0;\r\n this._start = 0;\r\n this._bytes = 0;\r\n this._hBytes = 0;\r\n this._lastByteIndex = 0;\r\n this._finalized = false;\r\n this._hashed = false;\r\n this._first = true;\r\n }\r\n /**\r\n * Perform Sum 256 on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum 256 of the data.\r\n */\r\n static sum256(data) {\r\n const b2b = new Sha256(Sha256.SIZE_256);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Perform Sum 224 on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum 224 of the data.\r\n */\r\n static sum224(data) {\r\n const b2b = new Sha256(Sha256.SIZE_224);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n if (this._finalized) {\r\n throw new Error(\"The hash has already been finalized.\");\r\n }\r\n let index = 0;\r\n let i;\r\n const length = message.length;\r\n const blocks = this._blocks;\r\n while (index < length) {\r\n if (this._hashed) {\r\n this._hashed = false;\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n for (i = this._start; index < length && i < 64; ++index) {\r\n blocks[i >> 2] |= message[index] << Sha256.SHIFT[i++ & 3];\r\n }\r\n this._lastByteIndex = i;\r\n this._bytes += i - this._start;\r\n if (i >= 64) {\r\n this._block = blocks[16];\r\n this._start = i - 64;\r\n this.hash();\r\n this._hashed = true;\r\n }\r\n else {\r\n this._start = i;\r\n }\r\n }\r\n if (this._bytes > 4294967295) {\r\n this._hBytes += Math.trunc(this._bytes / 4294967296);\r\n this._bytes %= 4294967296;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n this.finalize();\r\n const h0 = this._h0;\r\n const h1 = this._h1;\r\n const h2 = this._h2;\r\n const h3 = this._h3;\r\n const h4 = this._h4;\r\n const h5 = this._h5;\r\n const h6 = this._h6;\r\n const h7 = this._h7;\r\n const arr = [\r\n (h0 >> 24) & 0xff,\r\n (h0 >> 16) & 0xff,\r\n (h0 >> 8) & 0xff,\r\n h0 & 0xff,\r\n (h1 >> 24) & 0xff,\r\n (h1 >> 16) & 0xff,\r\n (h1 >> 8) & 0xff,\r\n h1 & 0xff,\r\n (h2 >> 24) & 0xff,\r\n (h2 >> 16) & 0xff,\r\n (h2 >> 8) & 0xff,\r\n h2 & 0xff,\r\n (h3 >> 24) & 0xff,\r\n (h3 >> 16) & 0xff,\r\n (h3 >> 8) & 0xff,\r\n h3 & 0xff,\r\n (h4 >> 24) & 0xff,\r\n (h4 >> 16) & 0xff,\r\n (h4 >> 8) & 0xff,\r\n h4 & 0xff,\r\n (h5 >> 24) & 0xff,\r\n (h5 >> 16) & 0xff,\r\n (h5 >> 8) & 0xff,\r\n h5 & 0xff,\r\n (h6 >> 24) & 0xff,\r\n (h6 >> 16) & 0xff,\r\n (h6 >> 8) & 0xff,\r\n h6 & 0xff\r\n ];\r\n if (this._bits === Sha256.SIZE_256) {\r\n arr.push((h7 >> 24) & 0xff, (h7 >> 16) & 0xff, (h7 >> 8) & 0xff, h7 & 0xff);\r\n }\r\n return Uint8Array.from(arr);\r\n }\r\n /**\r\n * Finalize the hash.\r\n * @internal\r\n */\r\n finalize() {\r\n if (this._finalized) {\r\n return;\r\n }\r\n this._finalized = true;\r\n const blocks = this._blocks;\r\n const i = this._lastByteIndex;\r\n blocks[16] = this._block;\r\n blocks[i >> 2] |= Sha256.EXTRA[i & 3];\r\n this._block = blocks[16];\r\n if (i >= 56) {\r\n if (!this._hashed) {\r\n this.hash();\r\n }\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n blocks[14] = (this._hBytes << 3) | (this._bytes >>> 29);\r\n blocks[15] = this._bytes << 3;\r\n this.hash();\r\n }\r\n /**\r\n * Perform the hash.\r\n * @internal\r\n */\r\n hash() {\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f = this._h5;\r\n let g = this._h6;\r\n let h = this._h7;\r\n const blocks = this._blocks;\r\n let j;\r\n let s0;\r\n let s1;\r\n let maj;\r\n let t1;\r\n let t2;\r\n let ch;\r\n let ab;\r\n let da;\r\n let cd;\r\n let bc;\r\n for (j = 16; j < 64; ++j) {\r\n // rightrotate\r\n t1 = blocks[j - 15];\r\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\r\n t1 = blocks[j - 2];\r\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\r\n blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0;\r\n }\r\n bc = b & c;\r\n for (j = 0; j < 64; j += 4) {\r\n if (this._first) {\r\n if (this._bits === Sha256.SIZE_224) {\r\n ab = 300032;\r\n t1 = blocks[0] - 1413257819;\r\n h = (t1 - 150054599) << 0;\r\n d = (t1 + 24177077) << 0;\r\n }\r\n else {\r\n ab = 704751109;\r\n t1 = blocks[0] - 210244248;\r\n h = (t1 - 1521486534) << 0;\r\n d = (t1 + 143694565) << 0;\r\n }\r\n this._first = false;\r\n }\r\n else {\r\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\r\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\r\n ab = a & b;\r\n maj = ab ^ (a & c) ^ bc;\r\n ch = (e & f) ^ (~e & g);\r\n t1 = h + s1 + ch + Sha256.K[j] + blocks[j];\r\n t2 = s0 + maj;\r\n h = (d + t1) << 0;\r\n d = (t1 + t2) << 0;\r\n }\r\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\r\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\r\n da = d & a;\r\n maj = da ^ (d & b) ^ ab;\r\n ch = (h & e) ^ (~h & f);\r\n t1 = g + s1 + ch + Sha256.K[j + 1] + blocks[j + 1];\r\n t2 = s0 + maj;\r\n g = (c + t1) << 0;\r\n c = (t1 + t2) << 0;\r\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\r\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\r\n cd = c & d;\r\n maj = cd ^ (c & a) ^ da;\r\n ch = (g & h) ^ (~g & e);\r\n t1 = f + s1 + ch + Sha256.K[j + 2] + blocks[j + 2];\r\n t2 = s0 + maj;\r\n f = (b + t1) << 0;\r\n b = (t1 + t2) << 0;\r\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\r\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\r\n bc = b & c;\r\n maj = bc ^ (b & d) ^ cd;\r\n ch = (f & g) ^ (~f & h);\r\n t1 = e + s1 + ch + Sha256.K[j + 3] + blocks[j + 3];\r\n t2 = s0 + maj;\r\n e = (a + t1) << 0;\r\n a = (t1 + t2) << 0;\r\n }\r\n this._h0 += Math.trunc(a);\r\n this._h1 += Math.trunc(b);\r\n this._h2 += Math.trunc(c);\r\n this._h3 += Math.trunc(d);\r\n this._h4 += Math.trunc(e);\r\n this._h5 += Math.trunc(f);\r\n this._h6 += Math.trunc(g);\r\n this._h7 += Math.trunc(h);\r\n }\r\n}\r\n/**\r\n * Sha256 256.\r\n */\r\nSha256.SIZE_256 = 256;\r\n/**\r\n * Sha256 224.\r\n */\r\nSha256.SIZE_224 = 224;\r\n/**\r\n * Extra constants.\r\n * @internal\r\n */\r\nSha256.EXTRA = [-2147483648, 8388608, 32768, 128];\r\n/**\r\n * Shift constants.\r\n * @internal\r\n */\r\nSha256.SHIFT = [24, 16, 8, 0];\r\n/**\r\n * K.\r\n * @internal\r\n */\r\nSha256.K = Uint32Array.from([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,\r\n 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\r\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8,\r\n 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\r\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\r\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\r\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7,\r\n 0xc67178f2\r\n]);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable array-bracket-newline */\r\n/**\r\n * Class to help with Sha512 scheme\r\n * TypeScript conversion from https://github.com/emn178/js-sha512.\r\n */\r\nexport class Sha512 {\r\n /**\r\n * Create a new instance of Sha512.\r\n * @param bits The number of bits.\r\n */\r\n constructor(bits = Sha512.SIZE_512) {\r\n /**\r\n * Blocks.\r\n * @internal\r\n */\r\n this._blocks = [];\r\n if (bits !== Sha512.SIZE_224 &&\r\n bits !== Sha512.SIZE_256 &&\r\n bits !== Sha512.SIZE_384 &&\r\n bits !== Sha512.SIZE_512) {\r\n throw new Error(\"Only 224, 256, 384 or 512 bits are supported\");\r\n }\r\n this._blocks = [\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\r\n ];\r\n if (bits === Sha512.SIZE_384) {\r\n this._h0h = 0xcbbb9d5d;\r\n this._h0l = 0xc1059ed8;\r\n this._h1h = 0x629a292a;\r\n this._h1l = 0x367cd507;\r\n this._h2h = 0x9159015a;\r\n this._h2l = 0x3070dd17;\r\n this._h3h = 0x152fecd8;\r\n this._h3l = 0xf70e5939;\r\n this._h4h = 0x67332667;\r\n this._h4l = 0xffc00b31;\r\n this._h5h = 0x8eb44a87;\r\n this._h5l = 0x68581511;\r\n this._h6h = 0xdb0c2e0d;\r\n this._h6l = 0x64f98fa7;\r\n this._h7h = 0x47b5481d;\r\n this._h7l = 0xbefa4fa4;\r\n }\r\n else if (bits === Sha512.SIZE_256) {\r\n this._h0h = 0x22312194;\r\n this._h0l = 0xfc2bf72c;\r\n this._h1h = 0x9f555fa3;\r\n this._h1l = 0xc84c64c2;\r\n this._h2h = 0x2393b86b;\r\n this._h2l = 0x6f53b151;\r\n this._h3h = 0x96387719;\r\n this._h3l = 0x5940eabd;\r\n this._h4h = 0x96283ee2;\r\n this._h4l = 0xa88effe3;\r\n this._h5h = 0xbe5e1e25;\r\n this._h5l = 0x53863992;\r\n this._h6h = 0x2b0199fc;\r\n this._h6l = 0x2c85b8aa;\r\n this._h7h = 0x0eb72ddc;\r\n this._h7l = 0x81c52ca2;\r\n }\r\n else if (bits === Sha512.SIZE_224) {\r\n this._h0h = 0x8c3d37c8;\r\n this._h0l = 0x19544da2;\r\n this._h1h = 0x73e19966;\r\n this._h1l = 0x89dcd4d6;\r\n this._h2h = 0x1dfab7ae;\r\n this._h2l = 0x32ff9c82;\r\n this._h3h = 0x679dd514;\r\n this._h3l = 0x582f9fcf;\r\n this._h4h = 0x0f6d2b69;\r\n this._h4l = 0x7bd44da8;\r\n this._h5h = 0x77e36f73;\r\n this._h5l = 0x04c48942;\r\n this._h6h = 0x3f9d85a8;\r\n this._h6l = 0x6a1d36c8;\r\n this._h7h = 0x1112e6ad;\r\n this._h7l = 0x91d692a1;\r\n }\r\n else {\r\n // 512\r\n this._h0h = 0x6a09e667;\r\n this._h0l = 0xf3bcc908;\r\n this._h1h = 0xbb67ae85;\r\n this._h1l = 0x84caa73b;\r\n this._h2h = 0x3c6ef372;\r\n this._h2l = 0xfe94f82b;\r\n this._h3h = 0xa54ff53a;\r\n this._h3l = 0x5f1d36f1;\r\n this._h4h = 0x510e527f;\r\n this._h4l = 0xade682d1;\r\n this._h5h = 0x9b05688c;\r\n this._h5l = 0x2b3e6c1f;\r\n this._h6h = 0x1f83d9ab;\r\n this._h6l = 0xfb41bd6b;\r\n this._h7h = 0x5be0cd19;\r\n this._h7l = 0x137e2179;\r\n }\r\n this._bits = bits;\r\n this._block = 0;\r\n this._start = 0;\r\n this._bytes = 0;\r\n this._hBytes = 0;\r\n this._lastByteIndex = 0;\r\n this._finalized = false;\r\n this._hashed = false;\r\n }\r\n /**\r\n * Perform Sum 512 on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum 512 of the data.\r\n */\r\n static sum512(data) {\r\n const b2b = new Sha512(Sha512.SIZE_512);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n if (this._finalized) {\r\n throw new Error(\"The hash has already been finalized.\");\r\n }\r\n let index = 0;\r\n let i;\r\n const length = message.length;\r\n const blocks = this._blocks;\r\n while (index < length) {\r\n if (this._hashed) {\r\n this._hashed = false;\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n blocks[17] = 0;\r\n blocks[18] = 0;\r\n blocks[19] = 0;\r\n blocks[20] = 0;\r\n blocks[21] = 0;\r\n blocks[22] = 0;\r\n blocks[23] = 0;\r\n blocks[24] = 0;\r\n blocks[25] = 0;\r\n blocks[26] = 0;\r\n blocks[27] = 0;\r\n blocks[28] = 0;\r\n blocks[29] = 0;\r\n blocks[30] = 0;\r\n blocks[31] = 0;\r\n blocks[32] = 0;\r\n }\r\n for (i = this._start; index < length && i < 128; ++index) {\r\n blocks[i >> 2] |= message[index] << Sha512.SHIFT[i++ & 3];\r\n }\r\n this._lastByteIndex = i;\r\n this._bytes += i - this._start;\r\n if (i >= 128) {\r\n this._block = blocks[32];\r\n this._start = i - 128;\r\n this.hash();\r\n this._hashed = true;\r\n }\r\n else {\r\n this._start = i;\r\n }\r\n }\r\n if (this._bytes > 4294967295) {\r\n this._hBytes += Math.trunc(this._bytes / 4294967296);\r\n this._bytes %= 4294967296;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n this.finalize();\r\n const h0h = this._h0h;\r\n const h0l = this._h0l;\r\n const h1h = this._h1h;\r\n const h1l = this._h1l;\r\n const h2h = this._h2h;\r\n const h2l = this._h2l;\r\n const h3h = this._h3h;\r\n const h3l = this._h3l;\r\n const h4h = this._h4h;\r\n const h4l = this._h4l;\r\n const h5h = this._h5h;\r\n const h5l = this._h5l;\r\n const h6h = this._h6h;\r\n const h6l = this._h6l;\r\n const h7h = this._h7h;\r\n const h7l = this._h7l;\r\n const bits = this._bits;\r\n const arr = [\r\n (h0h >> 24) & 0xff,\r\n (h0h >> 16) & 0xff,\r\n (h0h >> 8) & 0xff,\r\n h0h & 0xff,\r\n (h0l >> 24) & 0xff,\r\n (h0l >> 16) & 0xff,\r\n (h0l >> 8) & 0xff,\r\n h0l & 0xff,\r\n (h1h >> 24) & 0xff,\r\n (h1h >> 16) & 0xff,\r\n (h1h >> 8) & 0xff,\r\n h1h & 0xff,\r\n (h1l >> 24) & 0xff,\r\n (h1l >> 16) & 0xff,\r\n (h1l >> 8) & 0xff,\r\n h1l & 0xff,\r\n (h2h >> 24) & 0xff,\r\n (h2h >> 16) & 0xff,\r\n (h2h >> 8) & 0xff,\r\n h2h & 0xff,\r\n (h2l >> 24) & 0xff,\r\n (h2l >> 16) & 0xff,\r\n (h2l >> 8) & 0xff,\r\n h2l & 0xff,\r\n (h3h >> 24) & 0xff,\r\n (h3h >> 16) & 0xff,\r\n (h3h >> 8) & 0xff,\r\n h3h & 0xff\r\n ];\r\n if (bits >= Sha512.SIZE_256) {\r\n arr.push((h3l >> 24) & 0xff, (h3l >> 16) & 0xff, (h3l >> 8) & 0xff, h3l & 0xff);\r\n }\r\n if (bits >= Sha512.SIZE_384) {\r\n arr.push((h4h >> 24) & 0xff, (h4h >> 16) & 0xff, (h4h >> 8) & 0xff, h4h & 0xff, (h4l >> 24) & 0xff, (h4l >> 16) & 0xff, (h4l >> 8) & 0xff, h4l & 0xff, (h5h >> 24) & 0xff, (h5h >> 16) & 0xff, (h5h >> 8) & 0xff, h5h & 0xff, (h5l >> 24) & 0xff, (h5l >> 16) & 0xff, (h5l >> 8) & 0xff, h5l & 0xff);\r\n }\r\n if (bits === Sha512.SIZE_512) {\r\n arr.push((h6h >> 24) & 0xff, (h6h >> 16) & 0xff, (h6h >> 8) & 0xff, h6h & 0xff, (h6l >> 24) & 0xff, (h6l >> 16) & 0xff, (h6l >> 8) & 0xff, h6l & 0xff, (h7h >> 24) & 0xff, (h7h >> 16) & 0xff, (h7h >> 8) & 0xff, h7h & 0xff, (h7l >> 24) & 0xff, (h7l >> 16) & 0xff, (h7l >> 8) & 0xff, h7l & 0xff);\r\n }\r\n return Uint8Array.from(arr);\r\n }\r\n /**\r\n * Finalize the hash.\r\n * @internal\r\n */\r\n finalize() {\r\n if (this._finalized) {\r\n return;\r\n }\r\n this._finalized = true;\r\n const blocks = this._blocks;\r\n const i = this._lastByteIndex;\r\n blocks[32] = this._block;\r\n blocks[i >> 2] |= Sha512.EXTRA[i & 3];\r\n this._block = blocks[32];\r\n if (i >= 112) {\r\n if (!this._hashed) {\r\n this.hash();\r\n }\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n blocks[17] = 0;\r\n blocks[18] = 0;\r\n blocks[19] = 0;\r\n blocks[20] = 0;\r\n blocks[21] = 0;\r\n blocks[22] = 0;\r\n blocks[23] = 0;\r\n blocks[24] = 0;\r\n blocks[25] = 0;\r\n blocks[26] = 0;\r\n blocks[27] = 0;\r\n blocks[28] = 0;\r\n blocks[29] = 0;\r\n blocks[30] = 0;\r\n blocks[31] = 0;\r\n blocks[32] = 0;\r\n }\r\n blocks[30] = (this._hBytes << 3) | (this._bytes >>> 29);\r\n blocks[31] = this._bytes << 3;\r\n this.hash();\r\n }\r\n /**\r\n * Perform the hash.\r\n * @internal\r\n */\r\n hash() {\r\n const h0h = this._h0h;\r\n const h0l = this._h0l;\r\n const h1h = this._h1h;\r\n const h1l = this._h1l;\r\n const h2h = this._h2h;\r\n const h2l = this._h2l;\r\n const h3h = this._h3h;\r\n const h3l = this._h3l;\r\n const h4h = this._h4h;\r\n const h4l = this._h4l;\r\n const h5h = this._h5h;\r\n const h5l = this._h5l;\r\n const h6h = this._h6h;\r\n const h6l = this._h6l;\r\n const h7h = this._h7h;\r\n const h7l = this._h7l;\r\n const blocks = this._blocks;\r\n let j;\r\n let s0h;\r\n let s0l;\r\n let s1h;\r\n let s1l;\r\n let c1;\r\n let c2;\r\n let c3;\r\n let c4;\r\n let abh;\r\n let abl;\r\n let dah;\r\n let dal;\r\n let cdh;\r\n let cdl;\r\n let bch;\r\n let bcl;\r\n let majh;\r\n let majl;\r\n let t1h;\r\n let t1l;\r\n let t2h;\r\n let t2l;\r\n let chh;\r\n let chl;\r\n for (j = 32; j < 160; j += 2) {\r\n t1h = blocks[j - 30];\r\n t1l = blocks[j - 29];\r\n s0h = ((t1h >>> 1) | (t1l << 31)) ^ ((t1h >>> 8) | (t1l << 24)) ^ (t1h >>> 7);\r\n s0l = ((t1l >>> 1) | (t1h << 31)) ^ ((t1l >>> 8) | (t1h << 24)) ^ ((t1l >>> 7) | (t1h << 25));\r\n t1h = blocks[j - 4];\r\n t1l = blocks[j - 3];\r\n s1h = ((t1h >>> 19) | (t1l << 13)) ^ ((t1l >>> 29) | (t1h << 3)) ^ (t1h >>> 6);\r\n s1l = ((t1l >>> 19) | (t1h << 13)) ^ ((t1h >>> 29) | (t1l << 3)) ^ ((t1l >>> 6) | (t1h << 26));\r\n t1h = blocks[j - 32];\r\n t1l = blocks[j - 31];\r\n t2h = blocks[j - 14];\r\n t2l = blocks[j - 13];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (s0l & 0xffff) + (s1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (s0h & 0xffff) + (s1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16);\r\n blocks[j] = (c4 << 16) | (c3 & 0xffff);\r\n blocks[j + 1] = (c2 << 16) | (c1 & 0xffff);\r\n }\r\n let ah = h0h;\r\n let al = h0l;\r\n let bh = h1h;\r\n let bl = h1l;\r\n let ch = h2h;\r\n let cl = h2l;\r\n let dh = h3h;\r\n let dl = h3l;\r\n let eh = h4h;\r\n let el = h4l;\r\n let fh = h5h;\r\n let fl = h5l;\r\n let gh = h6h;\r\n let gl = h6l;\r\n let hh = h7h;\r\n let hl = h7l;\r\n bch = bh & ch;\r\n bcl = bl & cl;\r\n for (j = 0; j < 160; j += 8) {\r\n s0h = ((ah >>> 28) | (al << 4)) ^ ((al >>> 2) | (ah << 30)) ^ ((al >>> 7) | (ah << 25));\r\n s0l = ((al >>> 28) | (ah << 4)) ^ ((ah >>> 2) | (al << 30)) ^ ((ah >>> 7) | (al << 25));\r\n s1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((el >>> 9) | (eh << 23));\r\n s1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((eh >>> 9) | (el << 23));\r\n abh = ah & bh;\r\n abl = al & bl;\r\n majh = abh ^ (ah & ch) ^ bch;\r\n majl = abl ^ (al & cl) ^ bcl;\r\n chh = (eh & fh) ^ (~eh & gh);\r\n chl = (el & fl) ^ (~el & gl);\r\n t1h = blocks[j];\r\n t1l = blocks[j + 1];\r\n t2h = Sha512.K[j];\r\n t2l = Sha512.K[j + 1];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (hl & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (hl >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (hh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (dl & 0xffff) + (t1l & 0xffff);\r\n c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (dh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n hh = (c4 << 16) | (c3 & 0xffff);\r\n hl = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n dh = (c4 << 16) | (c3 & 0xffff);\r\n dl = (c2 << 16) | (c1 & 0xffff);\r\n s0h = ((dh >>> 28) | (dl << 4)) ^ ((dl >>> 2) | (dh << 30)) ^ ((dl >>> 7) | (dh << 25));\r\n s0l = ((dl >>> 28) | (dh << 4)) ^ ((dh >>> 2) | (dl << 30)) ^ ((dh >>> 7) | (dl << 25));\r\n s1h = ((hh >>> 14) | (hl << 18)) ^ ((hh >>> 18) | (hl << 14)) ^ ((hl >>> 9) | (hh << 23));\r\n s1l = ((hl >>> 14) | (hh << 18)) ^ ((hl >>> 18) | (hh << 14)) ^ ((hh >>> 9) | (hl << 23));\r\n dah = dh & ah;\r\n dal = dl & al;\r\n majh = dah ^ (dh & bh) ^ abh;\r\n majl = dal ^ (dl & bl) ^ abl;\r\n chh = (hh & eh) ^ (~hh & fh);\r\n chl = (hl & el) ^ (~hl & fl);\r\n t1h = blocks[j + 2];\r\n t1l = blocks[j + 3];\r\n t2h = Sha512.K[j + 2];\r\n t2l = Sha512.K[j + 3];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (gl & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (gl >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (gh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (cl & 0xffff) + (t1l & 0xffff);\r\n c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (ch & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n gh = (c4 << 16) | (c3 & 0xffff);\r\n gl = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n ch = (c4 << 16) | (c3 & 0xffff);\r\n cl = (c2 << 16) | (c1 & 0xffff);\r\n s0h = ((ch >>> 28) | (cl << 4)) ^ ((cl >>> 2) | (ch << 30)) ^ ((cl >>> 7) | (ch << 25));\r\n s0l = ((cl >>> 28) | (ch << 4)) ^ ((ch >>> 2) | (cl << 30)) ^ ((ch >>> 7) | (cl << 25));\r\n s1h = ((gh >>> 14) | (gl << 18)) ^ ((gh >>> 18) | (gl << 14)) ^ ((gl >>> 9) | (gh << 23));\r\n s1l = ((gl >>> 14) | (gh << 18)) ^ ((gl >>> 18) | (gh << 14)) ^ ((gh >>> 9) | (gl << 23));\r\n cdh = ch & dh;\r\n cdl = cl & dl;\r\n majh = cdh ^ (ch & ah) ^ dah;\r\n majl = cdl ^ (cl & al) ^ dal;\r\n chh = (gh & hh) ^ (~gh & eh);\r\n chl = (gl & hl) ^ (~gl & el);\r\n t1h = blocks[j + 4];\r\n t1l = blocks[j + 5];\r\n t2h = Sha512.K[j + 4];\r\n t2l = Sha512.K[j + 5];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (fl & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (fl >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (fh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (bl & 0xffff) + (t1l & 0xffff);\r\n c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (bh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n fh = (c4 << 16) | (c3 & 0xffff);\r\n fl = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n bh = (c4 << 16) | (c3 & 0xffff);\r\n bl = (c2 << 16) | (c1 & 0xffff);\r\n s0h = ((bh >>> 28) | (bl << 4)) ^ ((bl >>> 2) | (bh << 30)) ^ ((bl >>> 7) | (bh << 25));\r\n s0l = ((bl >>> 28) | (bh << 4)) ^ ((bh >>> 2) | (bl << 30)) ^ ((bh >>> 7) | (bl << 25));\r\n s1h = ((fh >>> 14) | (fl << 18)) ^ ((fh >>> 18) | (fl << 14)) ^ ((fl >>> 9) | (fh << 23));\r\n s1l = ((fl >>> 14) | (fh << 18)) ^ ((fl >>> 18) | (fh << 14)) ^ ((fh >>> 9) | (fl << 23));\r\n bch = bh & ch;\r\n bcl = bl & cl;\r\n majh = bch ^ (bh & dh) ^ cdh;\r\n majl = bcl ^ (bl & dl) ^ cdl;\r\n chh = (fh & gh) ^ (~fh & hh);\r\n chl = (fl & gl) ^ (~fl & hl);\r\n t1h = blocks[j + 6];\r\n t1l = blocks[j + 7];\r\n t2h = Sha512.K[j + 6];\r\n t2l = Sha512.K[j + 7];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (el & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (el >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (eh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (al & 0xffff) + (t1l & 0xffff);\r\n c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (ah & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n eh = (c4 << 16) | (c3 & 0xffff);\r\n el = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n ah = (c4 << 16) | (c3 & 0xffff);\r\n al = (c2 << 16) | (c1 & 0xffff);\r\n }\r\n c1 = (h0l & 0xffff) + (al & 0xffff);\r\n c2 = (h0l >>> 16) + (al >>> 16) + (c1 >>> 16);\r\n c3 = (h0h & 0xffff) + (ah & 0xffff) + (c2 >>> 16);\r\n c4 = (h0h >>> 16) + (ah >>> 16) + (c3 >>> 16);\r\n this._h0h = (c4 << 16) | (c3 & 0xffff);\r\n this._h0l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h1l & 0xffff) + (bl & 0xffff);\r\n c2 = (h1l >>> 16) + (bl >>> 16) + (c1 >>> 16);\r\n c3 = (h1h & 0xffff) + (bh & 0xffff) + (c2 >>> 16);\r\n c4 = (h1h >>> 16) + (bh >>> 16) + (c3 >>> 16);\r\n this._h1h = (c4 << 16) | (c3 & 0xffff);\r\n this._h1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h2l & 0xffff) + (cl & 0xffff);\r\n c2 = (h2l >>> 16) + (cl >>> 16) + (c1 >>> 16);\r\n c3 = (h2h & 0xffff) + (ch & 0xffff) + (c2 >>> 16);\r\n c4 = (h2h >>> 16) + (ch >>> 16) + (c3 >>> 16);\r\n this._h2h = (c4 << 16) | (c3 & 0xffff);\r\n this._h2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h3l & 0xffff) + (dl & 0xffff);\r\n c2 = (h3l >>> 16) + (dl >>> 16) + (c1 >>> 16);\r\n c3 = (h3h & 0xffff) + (dh & 0xffff) + (c2 >>> 16);\r\n c4 = (h3h >>> 16) + (dh >>> 16) + (c3 >>> 16);\r\n this._h3h = (c4 << 16) | (c3 & 0xffff);\r\n this._h3l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h4l & 0xffff) + (el & 0xffff);\r\n c2 = (h4l >>> 16) + (el >>> 16) + (c1 >>> 16);\r\n c3 = (h4h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\r\n c4 = (h4h >>> 16) + (eh >>> 16) + (c3 >>> 16);\r\n this._h4h = (c4 << 16) | (c3 & 0xffff);\r\n this._h4l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h5l & 0xffff) + (fl & 0xffff);\r\n c2 = (h5l >>> 16) + (fl >>> 16) + (c1 >>> 16);\r\n c3 = (h5h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\r\n c4 = (h5h >>> 16) + (fh >>> 16) + (c3 >>> 16);\r\n this._h5h = (c4 << 16) | (c3 & 0xffff);\r\n this._h5l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h6l & 0xffff) + (gl & 0xffff);\r\n c2 = (h6l >>> 16) + (gl >>> 16) + (c1 >>> 16);\r\n c3 = (h6h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\r\n c4 = (h6h >>> 16) + (gh >>> 16) + (c3 >>> 16);\r\n this._h6h = (c4 << 16) | (c3 & 0xffff);\r\n this._h6l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h7l & 0xffff) + (hl & 0xffff);\r\n c2 = (h7l >>> 16) + (hl >>> 16) + (c1 >>> 16);\r\n c3 = (h7h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\r\n c4 = (h7h >>> 16) + (hh >>> 16) + (c3 >>> 16);\r\n this._h7h = (c4 << 16) | (c3 & 0xffff);\r\n this._h7l = (c2 << 16) | (c1 & 0xffff);\r\n }\r\n}\r\n/**\r\n * Sha512 224.\r\n */\r\nSha512.SIZE_224 = 224;\r\n/**\r\n * Sha512 256.\r\n */\r\nSha512.SIZE_256 = 256;\r\n/**\r\n * Sha512 384.\r\n */\r\nSha512.SIZE_384 = 384;\r\n/**\r\n * Sha512 512.\r\n */\r\nSha512.SIZE_512 = 512;\r\n/**\r\n * Extra constants.\r\n * @internal\r\n */\r\nSha512.EXTRA = [-2147483648, 8388608, 32768, 128];\r\n/**\r\n * Shift constants.\r\n * @internal\r\n */\r\nSha512.SHIFT = [24, 16, 8, 0];\r\n/**\r\n * K.\r\n * @internal\r\n */\r\nSha512.K = Uint32Array.from([\r\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b,\r\n 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242,\r\n 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe,\r\n 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\r\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc,\r\n 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f,\r\n 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967,\r\n 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\r\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1,\r\n 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218,\r\n 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08,\r\n 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\r\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814,\r\n 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915,\r\n 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f,\r\n 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\r\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be,\r\n 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\r\n]);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/**\r\n * Class to help with random generation.\r\n */\r\nexport class RandomHelper {\r\n /**\r\n * Generate a new random array.\r\n * @param length The length of buffer to create.\r\n * @returns The random array.\r\n */\r\n static generate(length) {\r\n return RandomHelper.randomPolyfill ? RandomHelper.randomPolyfill(length) : new Uint8Array(length);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { RandomHelper } from \"./utils/randomHelper.mjs\";\r\n// Random\r\nif (!RandomHelper.randomPolyfill) {\r\n RandomHelper.randomPolyfill = length => {\r\n const randomBytes = new Uint8Array(length);\r\n window.crypto.getRandomValues(randomBytes);\r\n return randomBytes;\r\n };\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to help with base32 Encoding/Decoding using RFC4648.\r\n */\r\nexport class Base32 {\r\n /**\r\n * Convert the base 32 string to a byte array.\r\n * @param base32 The base32 string to convert.\r\n * @returns The byte array.\r\n * @throws If the input string contains a character not in the Base32 alphabet.\r\n */\r\n static decode(base32) {\r\n let bits = 0;\r\n let value = 0;\r\n // eslint-disable-next-line no-div-regex\r\n base32 = base32.replace(/=+$/, \"\");\r\n let index = 0;\r\n const output = new Uint8Array(Math.trunc((base32.length * 5) / 8));\r\n for (let i = 0; i < base32.length; i++) {\r\n const idx = Base32._ALPHABET.indexOf(base32[i]);\r\n if (idx === -1) {\r\n throw new Error(`\"Invalid character found '${base32[i]}'`);\r\n }\r\n value = (value << 5) | idx;\r\n bits += 5;\r\n if (bits >= 8) {\r\n output[index++] = (value >>> (bits - 8)) & 255;\r\n bits -= 8;\r\n }\r\n }\r\n return output;\r\n }\r\n /**\r\n * Convert a byte array to base 32.\r\n * @param bytes The byte array to convert.\r\n * @returns The data as base32 string.\r\n */\r\n static encode(bytes) {\r\n let bits = 0;\r\n let value = 0;\r\n let output = \"\";\r\n for (let i = 0; i < bytes.byteLength; i++) {\r\n value = (value << 8) | bytes[i];\r\n bits += 8;\r\n while (bits >= 5) {\r\n output += Base32._ALPHABET[(value >>> (bits - 5)) & 31];\r\n bits -= 5;\r\n }\r\n }\r\n if (bits > 0) {\r\n output += Base32._ALPHABET[(value << (5 - bits)) & 31];\r\n }\r\n while (output.length % 8 !== 0) {\r\n output += \"=\";\r\n }\r\n return output;\r\n }\r\n}\r\n/**\r\n * Alphabet table for encoding.\r\n * @internal\r\n */\r\nBase32._ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to help with base58 Encoding/Decoding.\r\n */\r\nexport class Base58 {\r\n /**\r\n * Convert the base 58 string to a byte array.\r\n * @param base58 The base58 string to convert.\r\n * @returns The byte array.\r\n * @throws If the input string contains a character not in the Base58 alphabet.\r\n */\r\n static decode(base58) {\r\n let zeroes = 0;\r\n for (let i = 0; i < base58.length; i++) {\r\n if (base58[i] !== \"1\") {\r\n break;\r\n }\r\n zeroes += 1;\r\n }\r\n const size = Math.trunc((base58.length * 733) / 1000) + 1;\r\n const b256 = size <= 128 ? new Uint8Array(128).fill(0) : Buffer.alloc(size);\r\n let length = 0;\r\n for (let i = zeroes; i < base58.length; i++) {\r\n const ch = base58.charCodeAt(i);\r\n if (ch & 0xff80) {\r\n throw new Error(`\"Invalid character found '${ch}'`);\r\n }\r\n const val = Base58._ALPHABET_REVERSE[ch];\r\n if (val === -1) {\r\n throw new Error(`\"Invalid character found '${ch}'`);\r\n }\r\n let carry = val;\r\n let j = 0;\r\n for (let k = size - 1; k >= 0; k--, j++) {\r\n if (carry === 0 && j >= length) {\r\n break;\r\n }\r\n carry += b256[k] * 58;\r\n b256[k] = carry;\r\n carry >>>= 8;\r\n }\r\n length = j;\r\n }\r\n const out = new Uint8Array(zeroes + length);\r\n let j;\r\n for (j = 0; j < zeroes; j++) {\r\n out[j] = 0;\r\n }\r\n let i = size - length;\r\n while (i < size) {\r\n out[j++] = b256[i++];\r\n }\r\n return out;\r\n }\r\n /**\r\n * Convert a byte array to base 58.\r\n * @param bytes The byte array to encode.\r\n * @returns The data as base58 string.\r\n */\r\n static encode(bytes) {\r\n let zeroes = 0;\r\n for (let i = 0; i < bytes.length; i++) {\r\n if (bytes[i] !== 0) {\r\n break;\r\n }\r\n zeroes += 1;\r\n }\r\n const size = Math.trunc(((bytes.length - zeroes) * 138) / 100) + 1;\r\n const b58 = size <= 128 ? new Uint8Array(128).fill(0) : Buffer.alloc(size);\r\n let length = 0;\r\n for (let i = zeroes; i < bytes.length; i++) {\r\n let carry = bytes[i];\r\n let j = 0;\r\n for (let k = size - 1; k >= 0; k--, j++) {\r\n if (carry === 0 && j >= length) {\r\n break;\r\n }\r\n carry += b58[k] * 256;\r\n b58[k] = carry % 58;\r\n carry = Math.trunc(carry / 58);\r\n }\r\n length = j;\r\n }\r\n let i = size - length;\r\n while (i < size && b58[i] === 0) {\r\n i += 1;\r\n }\r\n let str = \"\";\r\n for (let j = 0; j < zeroes; j++) {\r\n str += \"1\";\r\n }\r\n while (i < size) {\r\n str += Base58._ALPHABET[b58[i++]];\r\n }\r\n return str;\r\n }\r\n}\r\n/**\r\n * Alphabet table for encoding.\r\n * @internal\r\n */\r\nBase58._ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\r\n/**\r\n * Reverse map for decoding.\r\n * @internal\r\n */\r\nBase58._ALPHABET_REVERSE = [\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8,\r\n -1, -1, -1, -1, -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, -1, 17, 18, 19, 20, 21, -1, 22, 23, 24, 25, 26, 27,\r\n 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, 44, 45, 46, 47, 48,\r\n 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, -1, -1, -1, -1\r\n];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/**\r\n * Class to help with base64 Encoding/Decoding.\r\n * Sourced from https://github.com/beatgammit/base64-js.\r\n */\r\nexport class Base64 {\r\n /**\r\n * Get the byte length of the data.\r\n * @param base64 The base64 string.\r\n * @returns The byte length of the data.\r\n */\r\n static byteLength(base64) {\r\n const lens = Base64.getLengths(base64);\r\n return Base64.calcByteLength(lens[0], lens[1]);\r\n }\r\n /**\r\n * Convert the base 64 string to a byte array.\r\n * @param base64 The base64 string to convert.\r\n * @returns The byte array.\r\n */\r\n static decode(base64) {\r\n let tmp;\r\n const lens = Base64.getLengths(base64);\r\n const validLen = lens[0];\r\n const placeHoldersLen = lens[1];\r\n const arr = new Uint8Array(Base64.calcByteLength(validLen, placeHoldersLen));\r\n let curByte = 0;\r\n // if there are placeholders, only get up to the last complete 4 chars\r\n const len = placeHoldersLen > 0 ? validLen - 4 : validLen;\r\n let i;\r\n for (i = 0; i < len; i += 4) {\r\n tmp =\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 18) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] << 12) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 2)] << 6) |\r\n Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 3)];\r\n arr[curByte++] = (tmp >> 16) & 0xff;\r\n arr[curByte++] = (tmp >> 8) & 0xff;\r\n arr[curByte++] = tmp & 0xff;\r\n }\r\n if (placeHoldersLen === 2) {\r\n tmp =\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 2) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] >> 4);\r\n arr[curByte++] = tmp & 0xff;\r\n }\r\n if (placeHoldersLen === 1) {\r\n tmp =\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 10) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] << 4) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 2)] >> 2);\r\n arr[curByte++] = (tmp >> 8) & 0xff;\r\n arr[curByte++] = tmp & 0xff;\r\n }\r\n return arr;\r\n }\r\n /**\r\n * Convert a byte array to base 64.\r\n * @param bytes The byte array to convert.\r\n * @returns The data as bas64 string.\r\n */\r\n static encode(bytes) {\r\n let tmp;\r\n const len = bytes.length;\r\n const extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\r\n const parts = [];\r\n const maxChunkLength = 16383; // must be multiple of 3\r\n // go through the array every three bytes, we'll deal with trailing stuff later\r\n for (let i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\r\n parts.push(Base64.encodeChunk(bytes, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\r\n }\r\n // pad the end with zeros, but make sure to not forget the extra bytes\r\n if (extraBytes === 1) {\r\n tmp = bytes[len - 1];\r\n parts.push(`${Base64._LOOKUP[tmp >> 2] + Base64._LOOKUP[(tmp << 4) & 0x3f]}==`);\r\n }\r\n else if (extraBytes === 2) {\r\n tmp = (bytes[len - 2] << 8) + bytes[len - 1];\r\n parts.push(`${Base64._LOOKUP[tmp >> 10] + Base64._LOOKUP[(tmp >> 4) & 0x3f] + Base64._LOOKUP[(tmp << 2) & 0x3f]}=`);\r\n }\r\n return parts.join(\"\");\r\n }\r\n /**\r\n * Calculate the byte length.\r\n * @param validLen The valid length.\r\n * @param placeHoldersLen The placeholder length.\r\n * @returns The length.\r\n * @internal\r\n */\r\n static calcByteLength(validLen, placeHoldersLen) {\r\n return ((validLen + placeHoldersLen) * 3) / 4 - placeHoldersLen;\r\n }\r\n /**\r\n * Get the valid and placeholder lengths from a bas64 string.\r\n * @param base64 The base64 string.\r\n * @returns The lengths.\r\n * @internal\r\n */\r\n static getLengths(base64) {\r\n const len = base64.length;\r\n if (len % 4 > 0) {\r\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\r\n }\r\n // Trim off extra bytes after placeholder bytes are found\r\n // See: https://github.com/beatgammit/base64-js/issues/42\r\n let validLen = base64.indexOf(\"=\");\r\n if (validLen === -1) {\r\n validLen = len;\r\n }\r\n const placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4);\r\n return [validLen, placeHoldersLen];\r\n }\r\n /**\r\n * Convert the triplet to base 64.\r\n * @param num The number to convert.\r\n * @returns The base64 erncoding.\r\n * @internal\r\n */\r\n static tripletToBase64(num) {\r\n return (Base64._LOOKUP[(num >> 18) & 0x3f] +\r\n Base64._LOOKUP[(num >> 12) & 0x3f] +\r\n Base64._LOOKUP[(num >> 6) & 0x3f] +\r\n Base64._LOOKUP[num & 0x3f]);\r\n }\r\n /**\r\n * Encode a chunk.\r\n * @param bytes The byte array.\r\n * @param start The start index in the buffer.\r\n * @param end The end index in the buffer.\r\n * @returns The encoded chunk.\r\n * @internal\r\n */\r\n static encodeChunk(bytes, start, end) {\r\n let tmp;\r\n const output = [];\r\n for (let i = start; i < end; i += 3) {\r\n tmp = ((bytes[i] << 16) & 0xff0000) + ((bytes[i + 1] << 8) & 0xff00) + (bytes[i + 2] & 0xff);\r\n output.push(Base64.tripletToBase64(tmp));\r\n }\r\n return output.join(\"\");\r\n }\r\n}\r\n/**\r\n * Alphabet table for encoding.\r\n * @internal\r\n */\r\nBase64._LOOKUP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n/**\r\n * Alphabet table for decoding.\r\n * @internal\r\n */\r\nBase64._REVERSE_LOOKUP = {\r\n \"43\": 62,\r\n \"45\": 62,\r\n \"47\": 63,\r\n \"48\": 52,\r\n \"49\": 53,\r\n \"50\": 54,\r\n \"51\": 55,\r\n \"52\": 56,\r\n \"53\": 57,\r\n \"54\": 58,\r\n \"55\": 59,\r\n \"56\": 60,\r\n \"57\": 61,\r\n \"65\": 0,\r\n \"66\": 1,\r\n \"67\": 2,\r\n \"68\": 3,\r\n \"69\": 4,\r\n \"70\": 5,\r\n \"71\": 6,\r\n \"72\": 7,\r\n \"73\": 8,\r\n \"74\": 9,\r\n \"75\": 10,\r\n \"76\": 11,\r\n \"77\": 12,\r\n \"78\": 13,\r\n \"79\": 14,\r\n \"80\": 15,\r\n \"81\": 16,\r\n \"82\": 17,\r\n \"83\": 18,\r\n \"84\": 19,\r\n \"85\": 20,\r\n \"86\": 21,\r\n \"87\": 22,\r\n \"88\": 23,\r\n \"89\": 24,\r\n \"90\": 25,\r\n \"95\": 63,\r\n \"97\": 26,\r\n \"98\": 27,\r\n \"99\": 28,\r\n \"100\": 29,\r\n \"101\": 30,\r\n \"102\": 31,\r\n \"103\": 32,\r\n \"104\": 33,\r\n \"105\": 34,\r\n \"106\": 35,\r\n \"107\": 36,\r\n \"108\": 37,\r\n \"109\": 38,\r\n \"110\": 39,\r\n \"111\": 40,\r\n \"112\": 41,\r\n \"113\": 42,\r\n \"114\": 43,\r\n \"115\": 44,\r\n \"116\": 45,\r\n \"117\": 46,\r\n \"118\": 47,\r\n \"119\": 48,\r\n \"120\": 49,\r\n \"121\": 50,\r\n \"122\": 51\r\n};\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable newline-per-chained-call */\r\n/* eslint-disable no-mixed-operators */\r\nimport bigInt from \"big-integer\";\r\nimport { RandomHelper } from \"./randomHelper.mjs\";\r\n/**\r\n * Helper methods for bigints.\r\n */\r\nexport class BigIntHelper {\r\n /**\r\n * Load 3 bytes from array as bigint.\r\n * @param data The input array.\r\n * @param byteOffset The start index to read from.\r\n * @returns The bigint.\r\n */\r\n static read3(data, byteOffset) {\r\n const v0 = (data[byteOffset + 0] + (data[byteOffset + 1] << 8) + (data[byteOffset + 2] << 16)) >>> 0;\r\n return bigInt(v0);\r\n }\r\n /**\r\n * Load 4 bytes from array as bigint.\r\n * @param data The input array.\r\n * @param byteOffset The start index to read from.\r\n * @returns The bigint.\r\n */\r\n static read4(data, byteOffset) {\r\n const v0 = (data[byteOffset + 0] +\r\n (data[byteOffset + 1] << 8) +\r\n (data[byteOffset + 2] << 16) +\r\n (data[byteOffset + 3] << 24)) >>>\r\n 0;\r\n return bigInt(v0);\r\n }\r\n /**\r\n * Load 8 bytes from array as bigint.\r\n * @param data The data to read from.\r\n * @param byteOffset The start index to read from.\r\n * @returns The bigint.\r\n */\r\n static read8(data, byteOffset) {\r\n const v0 = (data[byteOffset + 0] +\r\n (data[byteOffset + 1] << 8) +\r\n (data[byteOffset + 2] << 16) +\r\n (data[byteOffset + 3] << 24)) >>>\r\n 0;\r\n const v1 = (data[byteOffset + 4] +\r\n (data[byteOffset + 5] << 8) +\r\n (data[byteOffset + 6] << 16) +\r\n (data[byteOffset + 7] << 24)) >>>\r\n 0;\r\n return bigInt(v1).shiftLeft(BigIntHelper.BIG_32).or(v0);\r\n }\r\n /**\r\n * Convert a big int to bytes.\r\n * @param value The bigint.\r\n * @param data The buffer to write into.\r\n * @param byteOffset The start index to write from.\r\n */\r\n static write8(value, data, byteOffset) {\r\n const v0 = Number(value.and(BigIntHelper.BIG_32_MASK));\r\n const v1 = Number(value.shiftRight(BigIntHelper.BIG_32).and(BigIntHelper.BIG_32_MASK));\r\n data[byteOffset] = v0 & 0xff;\r\n data[byteOffset + 1] = (v0 >> 8) & 0xff;\r\n data[byteOffset + 2] = (v0 >> 16) & 0xff;\r\n data[byteOffset + 3] = (v0 >> 24) & 0xff;\r\n data[byteOffset + 4] = v1 & 0xff;\r\n data[byteOffset + 5] = (v1 >> 8) & 0xff;\r\n data[byteOffset + 6] = (v1 >> 16) & 0xff;\r\n data[byteOffset + 7] = (v1 >> 24) & 0xff;\r\n }\r\n /**\r\n * Generate a random bigint.\r\n * @returns The bitint.\r\n */\r\n static random() {\r\n return BigIntHelper.read8(RandomHelper.generate(8), 0);\r\n }\r\n}\r\n// @internal\r\nBigIntHelper.BIG_32 = bigInt(32);\r\n// @internal\r\nBigIntHelper.BIG_32_MASK = bigInt(0xffffffff);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Base64 } from \"../encoding/base64.mjs\";\r\n/**\r\n * Convert arrays to and from different formats.\r\n */\r\nexport class Converter {\r\n /**\r\n * Encode a raw array to UTF8 string.\r\n * @param array The bytes to encode.\r\n * @param startIndex The index to start in the bytes.\r\n * @param length The length of bytes to read.\r\n * @returns The array formated as UTF8.\r\n */\r\n static bytesToUtf8(array, startIndex, length) {\r\n const start = startIndex !== null && startIndex !== void 0 ? startIndex : 0;\r\n const len = length !== null && length !== void 0 ? length : array.length;\r\n let str = \"\";\r\n for (let i = start; i < start + len; i++) {\r\n const value = array[i];\r\n if (value < 0x80) {\r\n str += String.fromCharCode(value);\r\n }\r\n else if (value > 0xbf && value < 0xe0) {\r\n str += String.fromCharCode(((value & 0x1f) << 6) | (array[i + 1] & 0x3f));\r\n i += 1;\r\n }\r\n else if (value > 0xdf && value < 0xf0) {\r\n str += String.fromCharCode(((value & 0x0f) << 12) | ((array[i + 1] & 0x3f) << 6) | (array[i + 2] & 0x3f));\r\n i += 2;\r\n }\r\n else {\r\n // surrogate pair\r\n const charCode = (((value & 0x07) << 18) |\r\n ((array[i + 1] & 0x3f) << 12) |\r\n ((array[i + 2] & 0x3f) << 6) |\r\n (array[i + 3] & 0x3f)) -\r\n 0x010000;\r\n str += String.fromCharCode((charCode >> 10) | 0xd800, (charCode & 0x03ff) | 0xdc00);\r\n i += 3;\r\n }\r\n }\r\n return str;\r\n }\r\n /**\r\n * Convert a UTF8 string to raw array.\r\n * @param utf8 The text to decode.\r\n * @returns The array.\r\n */\r\n static utf8ToBytes(utf8) {\r\n const bytes = [];\r\n for (let i = 0; i < utf8.length; i++) {\r\n let charcode = utf8.charCodeAt(i);\r\n if (charcode < 0x80) {\r\n bytes.push(charcode);\r\n }\r\n else if (charcode < 0x800) {\r\n bytes.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\r\n }\r\n else if (charcode < 0xd800 || charcode >= 0xe000) {\r\n bytes.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\r\n }\r\n else {\r\n // surrogate pair\r\n i++;\r\n // UTF-16 encodes 0x10000-0x10FFFF by\r\n // subtracting 0x10000 and splitting the\r\n // 20 bits of 0x0-0xFFFFF into two halves\r\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (utf8.charCodeAt(i) & 0x3ff));\r\n bytes.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\r\n }\r\n }\r\n return Uint8Array.from(bytes);\r\n }\r\n /**\r\n * Encode a raw array to hex string.\r\n * @param array The bytes to encode.\r\n * @param startIndex The index to start in the bytes.\r\n * @param length The length of bytes to read.\r\n * @param reverse Reverse the combine direction.\r\n * @returns The array formated as hex.\r\n */\r\n static bytesToHex(array, startIndex, length, reverse) {\r\n let hex = \"\";\r\n this.buildHexLookups();\r\n if (Converter.ENCODE_LOOKUP) {\r\n const len = length !== null && length !== void 0 ? length : array.length;\r\n const start = startIndex !== null && startIndex !== void 0 ? startIndex : 0;\r\n if (reverse) {\r\n for (let i = 0; i < len; i++) {\r\n hex = Converter.ENCODE_LOOKUP[array[start + i]] + hex;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < len; i++) {\r\n hex += Converter.ENCODE_LOOKUP[array[start + i]];\r\n }\r\n }\r\n }\r\n return hex;\r\n }\r\n /**\r\n * Decode a hex string to raw array.\r\n * @param hex The hex to decode.\r\n * @param reverse Store the characters in reverse.\r\n * @returns The array.\r\n */\r\n static hexToBytes(hex, reverse) {\r\n const sizeof = hex.length >> 1;\r\n const length = sizeof << 1;\r\n const array = new Uint8Array(sizeof);\r\n this.buildHexLookups();\r\n if (Converter.DECODE_LOOKUP) {\r\n let i = 0;\r\n let n = 0;\r\n while (i < length) {\r\n array[n++] =\r\n (Converter.DECODE_LOOKUP[hex.charCodeAt(i++)] << 4) | Converter.DECODE_LOOKUP[hex.charCodeAt(i++)];\r\n }\r\n if (reverse) {\r\n array.reverse();\r\n }\r\n }\r\n return array;\r\n }\r\n /**\r\n * Convert the UTF8 to hex.\r\n * @param utf8 The text to convert.\r\n * @returns The hex version of the bytes.\r\n */\r\n static utf8ToHex(utf8) {\r\n return Converter.bytesToHex(Converter.utf8ToBytes(utf8));\r\n }\r\n /**\r\n * Convert the hex text to text.\r\n * @param hex The hex to convert.\r\n * @returns The UTF8 version of the bytes.\r\n */\r\n static hexToUtf8(hex) {\r\n return Converter.bytesToUtf8(Converter.hexToBytes(hex));\r\n }\r\n /**\r\n * Is the data hex format.\r\n * @param value The value to test.\r\n * @returns True if the string is hex.\r\n */\r\n static isHex(value) {\r\n if (value.length % 2 === 1) {\r\n return false;\r\n }\r\n return /^[\\da-f]+$/g.test(value);\r\n }\r\n /**\r\n * Convert bytes to binary string.\r\n * @param bytes The bytes to convert.\r\n * @returns A binary string of the bytes.\r\n */\r\n static bytesToBinary(bytes) {\r\n const b = [];\r\n for (let i = 0; i < bytes.length; i++) {\r\n b.push(bytes[i].toString(2).padStart(8, \"0\"));\r\n }\r\n return b.join(\"\");\r\n }\r\n /**\r\n * Convert a binary string to bytes.\r\n * @param binary The binary string.\r\n * @returns The bytes.\r\n */\r\n static binaryToBytes(binary) {\r\n const bytes = new Uint8Array(Math.ceil(binary.length / 8));\r\n for (let i = 0; i < bytes.length; i++) {\r\n bytes[i] = Number.parseInt(binary.slice(i * 8, (i + 1) * 8), 2);\r\n }\r\n return bytes;\r\n }\r\n /**\r\n * Convert bytes to base64 string.\r\n * @param bytes The bytes to convert.\r\n * @returns A base64 string of the bytes.\r\n */\r\n static bytesToBase64(bytes) {\r\n return Base64.encode(bytes);\r\n }\r\n /**\r\n * Convert a base64 string to bytes.\r\n * @param base64 The base64 string.\r\n * @returns The bytes.\r\n */\r\n static base64ToBytes(base64) {\r\n return Base64.decode(base64);\r\n }\r\n /**\r\n * Build the static lookup tables.\r\n * @internal\r\n */\r\n static buildHexLookups() {\r\n if (!Converter.ENCODE_LOOKUP || !Converter.DECODE_LOOKUP) {\r\n const alphabet = \"0123456789abcdef\";\r\n Converter.ENCODE_LOOKUP = [];\r\n Converter.DECODE_LOOKUP = [];\r\n for (let i = 0; i < 256; i++) {\r\n Converter.ENCODE_LOOKUP[i] = alphabet[(i >> 4) & 0xf] + alphabet[i & 0xf];\r\n if (i < 16) {\r\n if (i < 10) {\r\n Converter.DECODE_LOOKUP[0x30 + i] = i;\r\n }\r\n else {\r\n Converter.DECODE_LOOKUP[0x61 - 10 + i] = i;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { BigIntHelper } from \"./bigIntHelper.mjs\";\r\nimport { Converter } from \"./converter.mjs\";\r\n/**\r\n * Keep track of the write index within a stream.\r\n */\r\nexport class WriteStream {\r\n /**\r\n * Create a new instance of ReadStream.\r\n */\r\n constructor() {\r\n this._storage = new Uint8Array(WriteStream.CHUNK_SIZE);\r\n this._writeIndex = 0;\r\n }\r\n /**\r\n * Get the length of the stream.\r\n * @returns The stream length.\r\n */\r\n length() {\r\n return this._storage.length;\r\n }\r\n /**\r\n * How much unused data is there.\r\n * @returns The amount of unused data.\r\n */\r\n unused() {\r\n return this._storage.length - this._writeIndex;\r\n }\r\n /**\r\n * Get the final stream as bytes.\r\n * @returns The final stream.\r\n */\r\n finalBytes() {\r\n return this._storage.subarray(0, this._writeIndex);\r\n }\r\n /**\r\n * Get the final stream as hex.\r\n * @returns The final stream as hex.\r\n */\r\n finalHex() {\r\n return Converter.bytesToHex(this._storage.subarray(0, this._writeIndex));\r\n }\r\n /**\r\n * Get the current write index.\r\n * @returns The current write index.\r\n */\r\n getWriteIndex() {\r\n return this._writeIndex;\r\n }\r\n /**\r\n * Set the current write index.\r\n * @param writeIndex The current write index.\r\n */\r\n setWriteIndex(writeIndex) {\r\n this._writeIndex = writeIndex;\r\n if (writeIndex >= this._storage.length) {\r\n throw new Error(`You cannot set the writeIndex to ${writeIndex} as the stream is only ${this._storage.length} in length`);\r\n }\r\n }\r\n /**\r\n * Write fixed length stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param length The length of the data to write.\r\n * @param val The data to write.\r\n */\r\n writeFixedHex(name, length, val) {\r\n if (!Converter.isHex(val)) {\r\n throw new Error(`The ${name} should be in hex format`);\r\n }\r\n // Hex should be twice the length as each byte is 2 characters\r\n if (length * 2 !== val.length) {\r\n throw new Error(`${name} length ${val.length} does not match expected length ${length * 2}`);\r\n }\r\n this.expand(length);\r\n this._storage.set(Converter.hexToBytes(val), this._writeIndex);\r\n this._writeIndex += length;\r\n }\r\n /**\r\n * Write fixed length stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param length The length of the data to write.\r\n * @param val The data to write.\r\n */\r\n writeBytes(name, length, val) {\r\n this.expand(length);\r\n this._storage.set(val, this._writeIndex);\r\n this._writeIndex += length;\r\n }\r\n /**\r\n * Write a byte to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeByte(name, val) {\r\n this.expand(1);\r\n this._storage[this._writeIndex++] = val & 0xff;\r\n }\r\n /**\r\n * Write a UInt16 to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeUInt16(name, val) {\r\n this.expand(2);\r\n this._storage[this._writeIndex++] = val & 0xff;\r\n this._storage[this._writeIndex++] = val >>> 8;\r\n }\r\n /**\r\n * Write a UInt32 to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeUInt32(name, val) {\r\n this.expand(4);\r\n this._storage[this._writeIndex++] = val & 0xff;\r\n this._storage[this._writeIndex++] = val >>> 8;\r\n this._storage[this._writeIndex++] = val >>> 16;\r\n this._storage[this._writeIndex++] = val >>> 24;\r\n }\r\n /**\r\n * Write a UInt64 to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeUInt64(name, val) {\r\n this.expand(8);\r\n BigIntHelper.write8(val, this._storage, this._writeIndex);\r\n this._writeIndex += 8;\r\n }\r\n /**\r\n * Write a boolean to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeBoolean(name, val) {\r\n this.expand(1);\r\n this._storage[this._writeIndex++] = val ? 1 : 0;\r\n }\r\n /**\r\n * Expand the storage if there is not enough spave.\r\n * @param additional The amount of space needed.\r\n */\r\n expand(additional) {\r\n if (this._writeIndex + additional > this._storage.byteLength) {\r\n const newArr = new Uint8Array(this._storage.length + Math.ceil(additional / WriteStream.CHUNK_SIZE) * WriteStream.CHUNK_SIZE);\r\n newArr.set(this._storage, 0);\r\n this._storage = newArr;\r\n }\r\n }\r\n}\r\n/**\r\n * Chunk size to expand the storage.\r\n * @internal\r\n */\r\nWriteStream.CHUNK_SIZE = 4096;\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Sha256 } from \"../hashes/sha256.mjs\";\r\n/**\r\n * Class to help with HmacSha256 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha256.\r\n */\r\nexport class HmacSha256 {\r\n /**\r\n * Create a new instance of HmacSha256.\r\n * @param key The key for the hmac.\r\n * @param bits The number of bits.\r\n */\r\n constructor(key, bits = 256) {\r\n this._bits = bits;\r\n this._sha256 = new Sha256(bits);\r\n if (key.length > 64) {\r\n // eslint-disable-next-line newline-per-chained-call\r\n key = new Sha256(bits).update(key).digest();\r\n }\r\n this._oKeyPad = new Uint8Array(64);\r\n const iKeyPad = new Uint8Array(64);\r\n for (let i = 0; i < 64; ++i) {\r\n const b = key[i] || 0;\r\n this._oKeyPad[i] = 0x5c ^ b;\r\n iKeyPad[i] = 0x36 ^ b;\r\n }\r\n this._sha256.update(iKeyPad);\r\n }\r\n /**\r\n * Perform Sum 256 on the data.\r\n * @param key The key for the hmac.\r\n * @param data The data to operate on.\r\n * @returns The sum 256 of the data.\r\n */\r\n static sum256(key, data) {\r\n const b2b = new HmacSha256(key, 256);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n this._sha256.update(message);\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n const innerHash = this._sha256.digest();\r\n const finalSha256 = new Sha256(this._bits);\r\n finalSha256.update(this._oKeyPad);\r\n finalSha256.update(innerHash);\r\n return finalSha256.digest();\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Sha512 } from \"../hashes/sha512.mjs\";\r\n/**\r\n * Class to help with HmacSha512 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha512.\r\n */\r\nexport class HmacSha512 {\r\n /**\r\n * Create a new instance of HmacSha512.\r\n * @param key The key for the hmac.\r\n * @param bits The number of bits.\r\n */\r\n constructor(key, bits = 512) {\r\n this._bits = bits;\r\n this._sha512 = new Sha512(bits);\r\n if (key.length > 128) {\r\n // eslint-disable-next-line newline-per-chained-call\r\n key = new Sha512(bits).update(key).digest();\r\n }\r\n this._oKeyPad = new Uint8Array(128);\r\n const iKeyPad = new Uint8Array(128);\r\n for (let i = 0; i < 128; ++i) {\r\n const b = key[i] || 0;\r\n this._oKeyPad[i] = 0x5c ^ b;\r\n iKeyPad[i] = 0x36 ^ b;\r\n }\r\n this._sha512.update(iKeyPad);\r\n }\r\n /**\r\n * Perform Sum 512 on the data.\r\n * @param key The key for the hmac.\r\n * @param data The data to operate on.\r\n * @returns The sum 512 of the data.\r\n */\r\n static sum512(key, data) {\r\n const b2b = new HmacSha512(key, 512);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n this._sha512.update(message);\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n const innerHash = this._sha512.digest();\r\n const finalSha512 = new Sha512(this._bits);\r\n finalSha512.update(this._oKeyPad);\r\n finalSha512.update(innerHash);\r\n return finalSha512.digest();\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable unicorn/prefer-math-trunc */\r\nimport { HmacSha256 } from \"../macs/hmacSha256.mjs\";\r\nimport { HmacSha512 } from \"../macs/hmacSha512.mjs\";\r\n/**\r\n * Implementation of the password based key derivation function 2.\r\n */\r\nexport class Pbkdf2 {\r\n /**\r\n * Derive a key from the parameters using Sha256.\r\n * @param password The password to derive the key from.\r\n * @param salt The salt for the derivation.\r\n * @param iterations Numer of iterations to perform.\r\n * @param keyLength The length of the key to derive.\r\n * @returns The derived key.\r\n */\r\n static sha256(password, salt, iterations, keyLength) {\r\n return Pbkdf2.deriveKey(password, salt, iterations, keyLength, 32, (pass, block) => HmacSha256.sum256(pass, block));\r\n }\r\n /**\r\n * Derive a key from the parameters using Sha512.\r\n * @param password The password to derive the key from.\r\n * @param salt The salt for the derivation.\r\n * @param iterations Numer of iterations to perform.\r\n * @param keyLength The length of the key to derive.\r\n * @returns The derived key.\r\n */\r\n static sha512(password, salt, iterations, keyLength) {\r\n return Pbkdf2.deriveKey(password, salt, iterations, keyLength, 64, (pass, block) => HmacSha512.sum512(pass, block));\r\n }\r\n /**\r\n * Derive a key from the parameters.\r\n * @param password The password to derive the key from.\r\n * @param salt The salt for the derivation.\r\n * @param iterations Numer of iterations to perform.\r\n * @param keyLength The length of the key to derive.\r\n * @param macLength The length of the mac key.\r\n * @param sumFunc The mac function.\r\n * @returns The derived key.\r\n * @internal\r\n */\r\n static deriveKey(password, salt, iterations, keyLength, macLength, sumFunc) {\r\n if (iterations < 1) {\r\n throw new Error(\"Iterations must be > 0\");\r\n }\r\n if (keyLength > (Math.pow(2, 32) - 1) * macLength) {\r\n throw new Error(\"Requested key length is too long\");\r\n }\r\n const DK = new Uint8Array(keyLength);\r\n let T = new Uint8Array(macLength);\r\n const block1 = new Uint8Array(salt.length + 4);\r\n const l = Math.ceil(keyLength / macLength);\r\n const r = (keyLength - (l - 1)) * macLength;\r\n block1.set(salt, 0);\r\n for (let i = 1; i <= l; i++) {\r\n block1[salt.length + 0] = (i >> 24) & 0xff;\r\n block1[salt.length + 1] = (i >> 16) & 0xff;\r\n block1[salt.length + 2] = (i >> 8) & 0xff;\r\n block1[salt.length + 3] = (i >> 0) & 0xff;\r\n let U = sumFunc(password, block1);\r\n T = U.slice(0, macLength);\r\n for (let j = 1; j < iterations; j++) {\r\n U = sumFunc(password, U);\r\n for (let k = 0; k < macLength; k++) {\r\n T[k] ^= U[k];\r\n }\r\n }\r\n const destPos = (i - 1) * macLength;\r\n const len = i === l ? r : macLength;\r\n for (let j = 0; j < len; j++) {\r\n DK[destPos + j] = T[j];\r\n }\r\n }\r\n return DK;\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nexport const english = [\r\n \"abandon\",\r\n \"ability\",\r\n \"able\",\r\n \"about\",\r\n \"above\",\r\n \"absent\",\r\n \"absorb\",\r\n \"abstract\",\r\n \"absurd\",\r\n \"abuse\",\r\n \"access\",\r\n \"accident\",\r\n \"account\",\r\n \"accuse\",\r\n \"achieve\",\r\n \"acid\",\r\n \"acoustic\",\r\n \"acquire\",\r\n \"across\",\r\n \"act\",\r\n \"action\",\r\n \"actor\",\r\n \"actress\",\r\n \"actual\",\r\n \"adapt\",\r\n \"add\",\r\n \"addict\",\r\n \"address\",\r\n \"adjust\",\r\n \"admit\",\r\n \"adult\",\r\n \"advance\",\r\n \"advice\",\r\n \"aerobic\",\r\n \"affair\",\r\n \"afford\",\r\n \"afraid\",\r\n \"again\",\r\n \"age\",\r\n \"agent\",\r\n \"agree\",\r\n \"ahead\",\r\n \"aim\",\r\n \"air\",\r\n \"airport\",\r\n \"aisle\",\r\n \"alarm\",\r\n \"album\",\r\n \"alcohol\",\r\n \"alert\",\r\n \"alien\",\r\n \"all\",\r\n \"alley\",\r\n \"allow\",\r\n \"almost\",\r\n \"alone\",\r\n \"alpha\",\r\n \"already\",\r\n \"also\",\r\n \"alter\",\r\n \"always\",\r\n \"amateur\",\r\n \"amazing\",\r\n \"among\",\r\n \"amount\",\r\n \"amused\",\r\n \"analyst\",\r\n \"anchor\",\r\n \"ancient\",\r\n \"anger\",\r\n \"angle\",\r\n \"angry\",\r\n \"animal\",\r\n \"ankle\",\r\n \"announce\",\r\n \"annual\",\r\n \"another\",\r\n \"answer\",\r\n \"antenna\",\r\n \"antique\",\r\n \"anxiety\",\r\n \"any\",\r\n \"apart\",\r\n \"apology\",\r\n \"appear\",\r\n \"apple\",\r\n \"approve\",\r\n \"april\",\r\n \"arch\",\r\n \"arctic\",\r\n \"area\",\r\n \"arena\",\r\n \"argue\",\r\n \"arm\",\r\n \"armed\",\r\n \"armor\",\r\n \"army\",\r\n \"around\",\r\n \"arrange\",\r\n \"arrest\",\r\n \"arrive\",\r\n \"arrow\",\r\n \"art\",\r\n \"artefact\",\r\n \"artist\",\r\n \"artwork\",\r\n \"ask\",\r\n \"aspect\",\r\n \"assault\",\r\n \"asset\",\r\n \"assist\",\r\n \"assume\",\r\n \"asthma\",\r\n \"athlete\",\r\n \"atom\",\r\n \"attack\",\r\n \"attend\",\r\n \"attitude\",\r\n \"attract\",\r\n \"auction\",\r\n \"audit\",\r\n \"august\",\r\n \"aunt\",\r\n \"author\",\r\n \"auto\",\r\n \"autumn\",\r\n \"average\",\r\n \"avocado\",\r\n \"avoid\",\r\n \"awake\",\r\n \"aware\",\r\n \"away\",\r\n \"awesome\",\r\n \"awful\",\r\n \"awkward\",\r\n \"axis\",\r\n \"baby\",\r\n \"bachelor\",\r\n \"bacon\",\r\n \"badge\",\r\n \"bag\",\r\n \"balance\",\r\n \"balcony\",\r\n \"ball\",\r\n \"bamboo\",\r\n \"banana\",\r\n \"banner\",\r\n \"bar\",\r\n \"barely\",\r\n \"bargain\",\r\n \"barrel\",\r\n \"base\",\r\n \"basic\",\r\n \"basket\",\r\n \"battle\",\r\n \"beach\",\r\n \"bean\",\r\n \"beauty\",\r\n \"because\",\r\n \"become\",\r\n \"beef\",\r\n \"before\",\r\n \"begin\",\r\n \"behave\",\r\n \"behind\",\r\n \"believe\",\r\n \"below\",\r\n \"belt\",\r\n \"bench\",\r\n \"benefit\",\r\n \"best\",\r\n \"betray\",\r\n \"better\",\r\n \"between\",\r\n \"beyond\",\r\n \"bicycle\",\r\n \"bid\",\r\n \"bike\",\r\n \"bind\",\r\n \"biology\",\r\n \"bird\",\r\n \"birth\",\r\n \"bitter\",\r\n \"black\",\r\n \"blade\",\r\n \"blame\",\r\n \"blanket\",\r\n \"blast\",\r\n \"bleak\",\r\n \"bless\",\r\n \"blind\",\r\n \"blood\",\r\n \"blossom\",\r\n \"blouse\",\r\n \"blue\",\r\n \"blur\",\r\n \"blush\",\r\n \"board\",\r\n \"boat\",\r\n \"body\",\r\n \"boil\",\r\n \"bomb\",\r\n \"bone\",\r\n \"bonus\",\r\n \"book\",\r\n \"boost\",\r\n \"border\",\r\n \"boring\",\r\n \"borrow\",\r\n \"boss\",\r\n \"bottom\",\r\n \"bounce\",\r\n \"box\",\r\n \"boy\",\r\n \"bracket\",\r\n \"brain\",\r\n \"brand\",\r\n \"brass\",\r\n \"brave\",\r\n \"bread\",\r\n \"breeze\",\r\n \"brick\",\r\n \"bridge\",\r\n \"brief\",\r\n \"bright\",\r\n \"bring\",\r\n \"brisk\",\r\n \"broccoli\",\r\n \"broken\",\r\n \"bronze\",\r\n \"broom\",\r\n \"brother\",\r\n \"brown\",\r\n \"brush\",\r\n \"bubble\",\r\n \"buddy\",\r\n \"budget\",\r\n \"buffalo\",\r\n \"build\",\r\n \"bulb\",\r\n \"bulk\",\r\n \"bullet\",\r\n \"bundle\",\r\n \"bunker\",\r\n \"burden\",\r\n \"burger\",\r\n \"burst\",\r\n \"bus\",\r\n \"business\",\r\n \"busy\",\r\n \"butter\",\r\n \"buyer\",\r\n \"buzz\",\r\n \"cabbage\",\r\n \"cabin\",\r\n \"cable\",\r\n \"cactus\",\r\n \"cage\",\r\n \"cake\",\r\n \"call\",\r\n \"calm\",\r\n \"camera\",\r\n \"camp\",\r\n \"can\",\r\n \"canal\",\r\n \"cancel\",\r\n \"candy\",\r\n \"cannon\",\r\n \"canoe\",\r\n \"canvas\",\r\n \"canyon\",\r\n \"capable\",\r\n \"capital\",\r\n \"captain\",\r\n \"car\",\r\n \"carbon\",\r\n \"card\",\r\n \"cargo\",\r\n \"carpet\",\r\n \"carry\",\r\n \"cart\",\r\n \"case\",\r\n \"cash\",\r\n \"casino\",\r\n \"castle\",\r\n \"casual\",\r\n \"cat\",\r\n \"catalog\",\r\n \"catch\",\r\n \"category\",\r\n \"cattle\",\r\n \"caught\",\r\n \"cause\",\r\n \"caution\",\r\n \"cave\",\r\n \"ceiling\",\r\n \"celery\",\r\n \"cement\",\r\n \"census\",\r\n \"century\",\r\n \"cereal\",\r\n \"certain\",\r\n \"chair\",\r\n \"chalk\",\r\n \"champion\",\r\n \"change\",\r\n \"chaos\",\r\n \"chapter\",\r\n \"charge\",\r\n \"chase\",\r\n \"chat\",\r\n \"cheap\",\r\n \"check\",\r\n \"cheese\",\r\n \"chef\",\r\n \"cherry\",\r\n \"chest\",\r\n \"chicken\",\r\n \"chief\",\r\n \"child\",\r\n \"chimney\",\r\n \"choice\",\r\n \"choose\",\r\n \"chronic\",\r\n \"chuckle\",\r\n \"chunk\",\r\n \"churn\",\r\n \"cigar\",\r\n \"cinnamon\",\r\n \"circle\",\r\n \"citizen\",\r\n \"city\",\r\n \"civil\",\r\n \"claim\",\r\n \"clap\",\r\n \"clarify\",\r\n \"claw\",\r\n \"clay\",\r\n \"clean\",\r\n \"clerk\",\r\n \"clever\",\r\n \"click\",\r\n \"client\",\r\n \"cliff\",\r\n \"climb\",\r\n \"clinic\",\r\n \"clip\",\r\n \"clock\",\r\n \"clog\",\r\n \"close\",\r\n \"cloth\",\r\n \"cloud\",\r\n \"clown\",\r\n \"club\",\r\n \"clump\",\r\n \"cluster\",\r\n \"clutch\",\r\n \"coach\",\r\n \"coast\",\r\n \"coconut\",\r\n \"code\",\r\n \"coffee\",\r\n \"coil\",\r\n \"coin\",\r\n \"collect\",\r\n \"color\",\r\n \"column\",\r\n \"combine\",\r\n \"come\",\r\n \"comfort\",\r\n \"comic\",\r\n \"common\",\r\n \"company\",\r\n \"concert\",\r\n \"conduct\",\r\n \"confirm\",\r\n \"congress\",\r\n \"connect\",\r\n \"consider\",\r\n \"control\",\r\n \"convince\",\r\n \"cook\",\r\n \"cool\",\r\n \"copper\",\r\n \"copy\",\r\n \"coral\",\r\n \"core\",\r\n \"corn\",\r\n \"correct\",\r\n \"cost\",\r\n \"cotton\",\r\n \"couch\",\r\n \"country\",\r\n \"couple\",\r\n \"course\",\r\n \"cousin\",\r\n \"cover\",\r\n \"coyote\",\r\n \"crack\",\r\n \"cradle\",\r\n \"craft\",\r\n \"cram\",\r\n \"crane\",\r\n \"crash\",\r\n \"crater\",\r\n \"crawl\",\r\n \"crazy\",\r\n \"cream\",\r\n \"credit\",\r\n \"creek\",\r\n \"crew\",\r\n \"cricket\",\r\n \"crime\",\r\n \"crisp\",\r\n \"critic\",\r\n \"crop\",\r\n \"cross\",\r\n \"crouch\",\r\n \"crowd\",\r\n \"crucial\",\r\n \"cruel\",\r\n \"cruise\",\r\n \"crumble\",\r\n \"crunch\",\r\n \"crush\",\r\n \"cry\",\r\n \"crystal\",\r\n \"cube\",\r\n \"culture\",\r\n \"cup\",\r\n \"cupboard\",\r\n \"curious\",\r\n \"current\",\r\n \"curtain\",\r\n \"curve\",\r\n \"cushion\",\r\n \"custom\",\r\n \"cute\",\r\n \"cycle\",\r\n \"dad\",\r\n \"damage\",\r\n \"damp\",\r\n \"dance\",\r\n \"danger\",\r\n \"daring\",\r\n \"dash\",\r\n \"daughter\",\r\n \"dawn\",\r\n \"day\",\r\n \"deal\",\r\n \"debate\",\r\n \"debris\",\r\n \"decade\",\r\n \"december\",\r\n \"decide\",\r\n \"decline\",\r\n \"decorate\",\r\n \"decrease\",\r\n \"deer\",\r\n \"defense\",\r\n \"define\",\r\n \"defy\",\r\n \"degree\",\r\n \"delay\",\r\n \"deliver\",\r\n \"demand\",\r\n \"demise\",\r\n \"denial\",\r\n \"dentist\",\r\n \"deny\",\r\n \"depart\",\r\n \"depend\",\r\n \"deposit\",\r\n \"depth\",\r\n \"deputy\",\r\n \"derive\",\r\n \"describe\",\r\n \"desert\",\r\n \"design\",\r\n \"desk\",\r\n \"despair\",\r\n \"destroy\",\r\n \"detail\",\r\n \"detect\",\r\n \"develop\",\r\n \"device\",\r\n \"devote\",\r\n \"diagram\",\r\n \"dial\",\r\n \"diamond\",\r\n \"diary\",\r\n \"dice\",\r\n \"diesel\",\r\n \"diet\",\r\n \"differ\",\r\n \"digital\",\r\n \"dignity\",\r\n \"dilemma\",\r\n \"dinner\",\r\n \"dinosaur\",\r\n \"direct\",\r\n \"dirt\",\r\n \"disagree\",\r\n \"discover\",\r\n \"disease\",\r\n \"dish\",\r\n \"dismiss\",\r\n \"disorder\",\r\n \"display\",\r\n \"distance\",\r\n \"divert\",\r\n \"divide\",\r\n \"divorce\",\r\n \"dizzy\",\r\n \"doctor\",\r\n \"document\",\r\n \"dog\",\r\n \"doll\",\r\n \"dolphin\",\r\n \"domain\",\r\n \"donate\",\r\n \"donkey\",\r\n \"donor\",\r\n \"door\",\r\n \"dose\",\r\n \"double\",\r\n \"dove\",\r\n \"draft\",\r\n \"dragon\",\r\n \"drama\",\r\n \"drastic\",\r\n \"draw\",\r\n \"dream\",\r\n \"dress\",\r\n \"drift\",\r\n \"drill\",\r\n \"drink\",\r\n \"drip\",\r\n \"drive\",\r\n \"drop\",\r\n \"drum\",\r\n \"dry\",\r\n \"duck\",\r\n \"dumb\",\r\n \"dune\",\r\n \"during\",\r\n \"dust\",\r\n \"dutch\",\r\n \"duty\",\r\n \"dwarf\",\r\n \"dynamic\",\r\n \"eager\",\r\n \"eagle\",\r\n \"early\",\r\n \"earn\",\r\n \"earth\",\r\n \"easily\",\r\n \"east\",\r\n \"easy\",\r\n \"echo\",\r\n \"ecology\",\r\n \"economy\",\r\n \"edge\",\r\n \"edit\",\r\n \"educate\",\r\n \"effort\",\r\n \"egg\",\r\n \"eight\",\r\n \"either\",\r\n \"elbow\",\r\n \"elder\",\r\n \"electric\",\r\n \"elegant\",\r\n \"element\",\r\n \"elephant\",\r\n \"elevator\",\r\n \"elite\",\r\n \"else\",\r\n \"embark\",\r\n \"embody\",\r\n \"embrace\",\r\n \"emerge\",\r\n \"emotion\",\r\n \"employ\",\r\n \"empower\",\r\n \"empty\",\r\n \"enable\",\r\n \"enact\",\r\n \"end\",\r\n \"endless\",\r\n \"endorse\",\r\n \"enemy\",\r\n \"energy\",\r\n \"enforce\",\r\n \"engage\",\r\n \"engine\",\r\n \"enhance\",\r\n \"enjoy\",\r\n \"enlist\",\r\n \"enough\",\r\n \"enrich\",\r\n \"enroll\",\r\n \"ensure\",\r\n \"enter\",\r\n \"entire\",\r\n \"entry\",\r\n \"envelope\",\r\n \"episode\",\r\n \"equal\",\r\n \"equip\",\r\n \"era\",\r\n \"erase\",\r\n \"erode\",\r\n \"erosion\",\r\n \"error\",\r\n \"erupt\",\r\n \"escape\",\r\n \"essay\",\r\n \"essence\",\r\n \"estate\",\r\n \"eternal\",\r\n \"ethics\",\r\n \"evidence\",\r\n \"evil\",\r\n \"evoke\",\r\n \"evolve\",\r\n \"exact\",\r\n \"example\",\r\n \"excess\",\r\n \"exchange\",\r\n \"excite\",\r\n \"exclude\",\r\n \"excuse\",\r\n \"execute\",\r\n \"exercise\",\r\n \"exhaust\",\r\n \"exhibit\",\r\n \"exile\",\r\n \"exist\",\r\n \"exit\",\r\n \"exotic\",\r\n \"expand\",\r\n \"expect\",\r\n \"expire\",\r\n \"explain\",\r\n \"expose\",\r\n \"express\",\r\n \"extend\",\r\n \"extra\",\r\n \"eye\",\r\n \"eyebrow\",\r\n \"fabric\",\r\n \"face\",\r\n \"faculty\",\r\n \"fade\",\r\n \"faint\",\r\n \"faith\",\r\n \"fall\",\r\n \"false\",\r\n \"fame\",\r\n \"family\",\r\n \"famous\",\r\n \"fan\",\r\n \"fancy\",\r\n \"fantasy\",\r\n \"farm\",\r\n \"fashion\",\r\n \"fat\",\r\n \"fatal\",\r\n \"father\",\r\n \"fatigue\",\r\n \"fault\",\r\n \"favorite\",\r\n \"feature\",\r\n \"february\",\r\n \"federal\",\r\n \"fee\",\r\n \"feed\",\r\n \"feel\",\r\n \"female\",\r\n \"fence\",\r\n \"festival\",\r\n \"fetch\",\r\n \"fever\",\r\n \"few\",\r\n \"fiber\",\r\n \"fiction\",\r\n \"field\",\r\n \"figure\",\r\n \"file\",\r\n \"film\",\r\n \"filter\",\r\n \"final\",\r\n \"find\",\r\n \"fine\",\r\n \"finger\",\r\n \"finish\",\r\n \"fire\",\r\n \"firm\",\r\n \"first\",\r\n \"fiscal\",\r\n \"fish\",\r\n \"fit\",\r\n \"fitness\",\r\n \"fix\",\r\n \"flag\",\r\n \"flame\",\r\n \"flash\",\r\n \"flat\",\r\n \"flavor\",\r\n \"flee\",\r\n \"flight\",\r\n \"flip\",\r\n \"float\",\r\n \"flock\",\r\n \"floor\",\r\n \"flower\",\r\n \"fluid\",\r\n \"flush\",\r\n \"fly\",\r\n \"foam\",\r\n \"focus\",\r\n \"fog\",\r\n \"foil\",\r\n \"fold\",\r\n \"follow\",\r\n \"food\",\r\n \"foot\",\r\n \"force\",\r\n \"forest\",\r\n \"forget\",\r\n \"fork\",\r\n \"fortune\",\r\n \"forum\",\r\n \"forward\",\r\n \"fossil\",\r\n \"foster\",\r\n \"found\",\r\n \"fox\",\r\n \"fragile\",\r\n \"frame\",\r\n \"frequent\",\r\n \"fresh\",\r\n \"friend\",\r\n \"fringe\",\r\n \"frog\",\r\n \"front\",\r\n \"frost\",\r\n \"frown\",\r\n \"frozen\",\r\n \"fruit\",\r\n \"fuel\",\r\n \"fun\",\r\n \"funny\",\r\n \"furnace\",\r\n \"fury\",\r\n \"future\",\r\n \"gadget\",\r\n \"gain\",\r\n \"galaxy\",\r\n \"gallery\",\r\n \"game\",\r\n \"gap\",\r\n \"garage\",\r\n \"garbage\",\r\n \"garden\",\r\n \"garlic\",\r\n \"garment\",\r\n \"gas\",\r\n \"gasp\",\r\n \"gate\",\r\n \"gather\",\r\n \"gauge\",\r\n \"gaze\",\r\n \"general\",\r\n \"genius\",\r\n \"genre\",\r\n \"gentle\",\r\n \"genuine\",\r\n \"gesture\",\r\n \"ghost\",\r\n \"giant\",\r\n \"gift\",\r\n \"giggle\",\r\n \"ginger\",\r\n \"giraffe\",\r\n \"girl\",\r\n \"give\",\r\n \"glad\",\r\n \"glance\",\r\n \"glare\",\r\n \"glass\",\r\n \"glide\",\r\n \"glimpse\",\r\n \"globe\",\r\n \"gloom\",\r\n \"glory\",\r\n \"glove\",\r\n \"glow\",\r\n \"glue\",\r\n \"goat\",\r\n \"goddess\",\r\n \"gold\",\r\n \"good\",\r\n \"goose\",\r\n \"gorilla\",\r\n \"gospel\",\r\n \"gossip\",\r\n \"govern\",\r\n \"gown\",\r\n \"grab\",\r\n \"grace\",\r\n \"grain\",\r\n \"grant\",\r\n \"grape\",\r\n \"grass\",\r\n \"gravity\",\r\n \"great\",\r\n \"green\",\r\n \"grid\",\r\n \"grief\",\r\n \"grit\",\r\n \"grocery\",\r\n \"group\",\r\n \"grow\",\r\n \"grunt\",\r\n \"guard\",\r\n \"guess\",\r\n \"guide\",\r\n \"guilt\",\r\n \"guitar\",\r\n \"gun\",\r\n \"gym\",\r\n \"habit\",\r\n \"hair\",\r\n \"half\",\r\n \"hammer\",\r\n \"hamster\",\r\n \"hand\",\r\n \"happy\",\r\n \"harbor\",\r\n \"hard\",\r\n \"harsh\",\r\n \"harvest\",\r\n \"hat\",\r\n \"have\",\r\n \"hawk\",\r\n \"hazard\",\r\n \"head\",\r\n \"health\",\r\n \"heart\",\r\n \"heavy\",\r\n \"hedgehog\",\r\n \"height\",\r\n \"hello\",\r\n \"helmet\",\r\n \"help\",\r\n \"hen\",\r\n \"hero\",\r\n \"hidden\",\r\n \"high\",\r\n \"hill\",\r\n \"hint\",\r\n \"hip\",\r\n \"hire\",\r\n \"history\",\r\n \"hobby\",\r\n \"hockey\",\r\n \"hold\",\r\n \"hole\",\r\n \"holiday\",\r\n \"hollow\",\r\n \"home\",\r\n \"honey\",\r\n \"hood\",\r\n \"hope\",\r\n \"horn\",\r\n \"horror\",\r\n \"horse\",\r\n \"hospital\",\r\n \"host\",\r\n \"hotel\",\r\n \"hour\",\r\n \"hover\",\r\n \"hub\",\r\n \"huge\",\r\n \"human\",\r\n \"humble\",\r\n \"humor\",\r\n \"hundred\",\r\n \"hungry\",\r\n \"hunt\",\r\n \"hurdle\",\r\n \"hurry\",\r\n \"hurt\",\r\n \"husband\",\r\n \"hybrid\",\r\n \"ice\",\r\n \"icon\",\r\n \"idea\",\r\n \"identify\",\r\n \"idle\",\r\n \"ignore\",\r\n \"ill\",\r\n \"illegal\",\r\n \"illness\",\r\n \"image\",\r\n \"imitate\",\r\n \"immense\",\r\n \"immune\",\r\n \"impact\",\r\n \"impose\",\r\n \"improve\",\r\n \"impulse\",\r\n \"inch\",\r\n \"include\",\r\n \"income\",\r\n \"increase\",\r\n \"index\",\r\n \"indicate\",\r\n \"indoor\",\r\n \"industry\",\r\n \"infant\",\r\n \"inflict\",\r\n \"inform\",\r\n \"inhale\",\r\n \"inherit\",\r\n \"initial\",\r\n \"inject\",\r\n \"injury\",\r\n \"inmate\",\r\n \"inner\",\r\n \"innocent\",\r\n \"input\",\r\n \"inquiry\",\r\n \"insane\",\r\n \"insect\",\r\n \"inside\",\r\n \"inspire\",\r\n \"install\",\r\n \"intact\",\r\n \"interest\",\r\n \"into\",\r\n \"invest\",\r\n \"invite\",\r\n \"involve\",\r\n \"iron\",\r\n \"island\",\r\n \"isolate\",\r\n \"issue\",\r\n \"item\",\r\n \"ivory\",\r\n \"jacket\",\r\n \"jaguar\",\r\n \"jar\",\r\n \"jazz\",\r\n \"jealous\",\r\n \"jeans\",\r\n \"jelly\",\r\n \"jewel\",\r\n \"job\",\r\n \"join\",\r\n \"joke\",\r\n \"journey\",\r\n \"joy\",\r\n \"judge\",\r\n \"juice\",\r\n \"jump\",\r\n \"jungle\",\r\n \"junior\",\r\n \"junk\",\r\n \"just\",\r\n \"kangaroo\",\r\n \"keen\",\r\n \"keep\",\r\n \"ketchup\",\r\n \"key\",\r\n \"kick\",\r\n \"kid\",\r\n \"kidney\",\r\n \"kind\",\r\n \"kingdom\",\r\n \"kiss\",\r\n \"kit\",\r\n \"kitchen\",\r\n \"kite\",\r\n \"kitten\",\r\n \"kiwi\",\r\n \"knee\",\r\n \"knife\",\r\n \"knock\",\r\n \"know\",\r\n \"lab\",\r\n \"label\",\r\n \"labor\",\r\n \"ladder\",\r\n \"lady\",\r\n \"lake\",\r\n \"lamp\",\r\n \"language\",\r\n \"laptop\",\r\n \"large\",\r\n \"later\",\r\n \"latin\",\r\n \"laugh\",\r\n \"laundry\",\r\n \"lava\",\r\n \"law\",\r\n \"lawn\",\r\n \"lawsuit\",\r\n \"layer\",\r\n \"lazy\",\r\n \"leader\",\r\n \"leaf\",\r\n \"learn\",\r\n \"leave\",\r\n \"lecture\",\r\n \"left\",\r\n \"leg\",\r\n \"legal\",\r\n \"legend\",\r\n \"leisure\",\r\n \"lemon\",\r\n \"lend\",\r\n \"length\",\r\n \"lens\",\r\n \"leopard\",\r\n \"lesson\",\r\n \"letter\",\r\n \"level\",\r\n \"liar\",\r\n \"liberty\",\r\n \"library\",\r\n \"license\",\r\n \"life\",\r\n \"lift\",\r\n \"light\",\r\n \"like\",\r\n \"limb\",\r\n \"limit\",\r\n \"link\",\r\n \"lion\",\r\n \"liquid\",\r\n \"list\",\r\n \"little\",\r\n \"live\",\r\n \"lizard\",\r\n \"load\",\r\n \"loan\",\r\n \"lobster\",\r\n \"local\",\r\n \"lock\",\r\n \"logic\",\r\n \"lonely\",\r\n \"long\",\r\n \"loop\",\r\n \"lottery\",\r\n \"loud\",\r\n \"lounge\",\r\n \"love\",\r\n \"loyal\",\r\n \"lucky\",\r\n \"luggage\",\r\n \"lumber\",\r\n \"lunar\",\r\n \"lunch\",\r\n \"luxury\",\r\n \"lyrics\",\r\n \"machine\",\r\n \"mad\",\r\n \"magic\",\r\n \"magnet\",\r\n \"maid\",\r\n \"mail\",\r\n \"main\",\r\n \"major\",\r\n \"make\",\r\n \"mammal\",\r\n \"man\",\r\n \"manage\",\r\n \"mandate\",\r\n \"mango\",\r\n \"mansion\",\r\n \"manual\",\r\n \"maple\",\r\n \"marble\",\r\n \"march\",\r\n \"margin\",\r\n \"marine\",\r\n \"market\",\r\n \"marriage\",\r\n \"mask\",\r\n \"mass\",\r\n \"master\",\r\n \"match\",\r\n \"material\",\r\n \"math\",\r\n \"matrix\",\r\n \"matter\",\r\n \"maximum\",\r\n \"maze\",\r\n \"meadow\",\r\n \"mean\",\r\n \"measure\",\r\n \"meat\",\r\n \"mechanic\",\r\n \"medal\",\r\n \"media\",\r\n \"melody\",\r\n \"melt\",\r\n \"member\",\r\n \"memory\",\r\n \"mention\",\r\n \"menu\",\r\n \"mercy\",\r\n \"merge\",\r\n \"merit\",\r\n \"merry\",\r\n \"mesh\",\r\n \"message\",\r\n \"metal\",\r\n \"method\",\r\n \"middle\",\r\n \"midnight\",\r\n \"milk\",\r\n \"million\",\r\n \"mimic\",\r\n \"mind\",\r\n \"minimum\",\r\n \"minor\",\r\n \"minute\",\r\n \"miracle\",\r\n \"mirror\",\r\n \"misery\",\r\n \"miss\",\r\n \"mistake\",\r\n \"mix\",\r\n \"mixed\",\r\n \"mixture\",\r\n \"mobile\",\r\n \"model\",\r\n \"modify\",\r\n \"mom\",\r\n \"moment\",\r\n \"monitor\",\r\n \"monkey\",\r\n \"monster\",\r\n \"month\",\r\n \"moon\",\r\n \"moral\",\r\n \"more\",\r\n \"morning\",\r\n \"mosquito\",\r\n \"mother\",\r\n \"motion\",\r\n \"motor\",\r\n \"mountain\",\r\n \"mouse\",\r\n \"move\",\r\n \"movie\",\r\n \"much\",\r\n \"muffin\",\r\n \"mule\",\r\n \"multiply\",\r\n \"muscle\",\r\n \"museum\",\r\n \"mushroom\",\r\n \"music\",\r\n \"must\",\r\n \"mutual\",\r\n \"myself\",\r\n \"mystery\",\r\n \"myth\",\r\n \"naive\",\r\n \"name\",\r\n \"napkin\",\r\n \"narrow\",\r\n \"nasty\",\r\n \"nation\",\r\n \"nature\",\r\n \"near\",\r\n \"neck\",\r\n \"need\",\r\n \"negative\",\r\n \"neglect\",\r\n \"neither\",\r\n \"nephew\",\r\n \"nerve\",\r\n \"nest\",\r\n \"net\",\r\n \"network\",\r\n \"neutral\",\r\n \"never\",\r\n \"news\",\r\n \"next\",\r\n \"nice\",\r\n \"night\",\r\n \"noble\",\r\n \"noise\",\r\n \"nominee\",\r\n \"noodle\",\r\n \"normal\",\r\n \"north\",\r\n \"nose\",\r\n \"notable\",\r\n \"note\",\r\n \"nothing\",\r\n \"notice\",\r\n \"novel\",\r\n \"now\",\r\n \"nuclear\",\r\n \"number\",\r\n \"nurse\",\r\n \"nut\",\r\n \"oak\",\r\n \"obey\",\r\n \"object\",\r\n \"oblige\",\r\n \"obscure\",\r\n \"observe\",\r\n \"obtain\",\r\n \"obvious\",\r\n \"occur\",\r\n \"ocean\",\r\n \"october\",\r\n \"odor\",\r\n \"off\",\r\n \"offer\",\r\n \"office\",\r\n \"often\",\r\n \"oil\",\r\n \"okay\",\r\n \"old\",\r\n \"olive\",\r\n \"olympic\",\r\n \"omit\",\r\n \"once\",\r\n \"one\",\r\n \"onion\",\r\n \"online\",\r\n \"only\",\r\n \"open\",\r\n \"opera\",\r\n \"opinion\",\r\n \"oppose\",\r\n \"option\",\r\n \"orange\",\r\n \"orbit\",\r\n \"orchard\",\r\n \"order\",\r\n \"ordinary\",\r\n \"organ\",\r\n \"orient\",\r\n \"original\",\r\n \"orphan\",\r\n \"ostrich\",\r\n \"other\",\r\n \"outdoor\",\r\n \"outer\",\r\n \"output\",\r\n \"outside\",\r\n \"oval\",\r\n \"oven\",\r\n \"over\",\r\n \"own\",\r\n \"owner\",\r\n \"oxygen\",\r\n \"oyster\",\r\n \"ozone\",\r\n \"pact\",\r\n \"paddle\",\r\n \"page\",\r\n \"pair\",\r\n \"palace\",\r\n \"palm\",\r\n \"panda\",\r\n \"panel\",\r\n \"panic\",\r\n \"panther\",\r\n \"paper\",\r\n \"parade\",\r\n \"parent\",\r\n \"park\",\r\n \"parrot\",\r\n \"party\",\r\n \"pass\",\r\n \"patch\",\r\n \"path\",\r\n \"patient\",\r\n \"patrol\",\r\n \"pattern\",\r\n \"pause\",\r\n \"pave\",\r\n \"payment\",\r\n \"peace\",\r\n \"peanut\",\r\n \"pear\",\r\n \"peasant\",\r\n \"pelican\",\r\n \"pen\",\r\n \"penalty\",\r\n \"pencil\",\r\n \"people\",\r\n \"pepper\",\r\n \"perfect\",\r\n \"permit\",\r\n \"person\",\r\n \"pet\",\r\n \"phone\",\r\n \"photo\",\r\n \"phrase\",\r\n \"physical\",\r\n \"piano\",\r\n \"picnic\",\r\n \"picture\",\r\n \"piece\",\r\n \"pig\",\r\n \"pigeon\",\r\n \"pill\",\r\n \"pilot\",\r\n \"pink\",\r\n \"pioneer\",\r\n \"pipe\",\r\n \"pistol\",\r\n \"pitch\",\r\n \"pizza\",\r\n \"place\",\r\n \"planet\",\r\n \"plastic\",\r\n \"plate\",\r\n \"play\",\r\n \"please\",\r\n \"pledge\",\r\n \"pluck\",\r\n \"plug\",\r\n \"plunge\",\r\n \"poem\",\r\n \"poet\",\r\n \"point\",\r\n \"polar\",\r\n \"pole\",\r\n \"police\",\r\n \"pond\",\r\n \"pony\",\r\n \"pool\",\r\n \"popular\",\r\n \"portion\",\r\n \"position\",\r\n \"possible\",\r\n \"post\",\r\n \"potato\",\r\n \"pottery\",\r\n \"poverty\",\r\n \"powder\",\r\n \"power\",\r\n \"practice\",\r\n \"praise\",\r\n \"predict\",\r\n \"prefer\",\r\n \"prepare\",\r\n \"present\",\r\n \"pretty\",\r\n \"prevent\",\r\n \"price\",\r\n \"pride\",\r\n \"primary\",\r\n \"print\",\r\n \"priority\",\r\n \"prison\",\r\n \"private\",\r\n \"prize\",\r\n \"problem\",\r\n \"process\",\r\n \"produce\",\r\n \"profit\",\r\n \"program\",\r\n \"project\",\r\n \"promote\",\r\n \"proof\",\r\n \"property\",\r\n \"prosper\",\r\n \"protect\",\r\n \"proud\",\r\n \"provide\",\r\n \"public\",\r\n \"pudding\",\r\n \"pull\",\r\n \"pulp\",\r\n \"pulse\",\r\n \"pumpkin\",\r\n \"punch\",\r\n \"pupil\",\r\n \"puppy\",\r\n \"purchase\",\r\n \"purity\",\r\n \"purpose\",\r\n \"purse\",\r\n \"push\",\r\n \"put\",\r\n \"puzzle\",\r\n \"pyramid\",\r\n \"quality\",\r\n \"quantum\",\r\n \"quarter\",\r\n \"question\",\r\n \"quick\",\r\n \"quit\",\r\n \"quiz\",\r\n \"quote\",\r\n \"rabbit\",\r\n \"raccoon\",\r\n \"race\",\r\n \"rack\",\r\n \"radar\",\r\n \"radio\",\r\n \"rail\",\r\n \"rain\",\r\n \"raise\",\r\n \"rally\",\r\n \"ramp\",\r\n \"ranch\",\r\n \"random\",\r\n \"range\",\r\n \"rapid\",\r\n \"rare\",\r\n \"rate\",\r\n \"rather\",\r\n \"raven\",\r\n \"raw\",\r\n \"razor\",\r\n \"ready\",\r\n \"real\",\r\n \"reason\",\r\n \"rebel\",\r\n \"rebuild\",\r\n \"recall\",\r\n \"receive\",\r\n \"recipe\",\r\n \"record\",\r\n \"recycle\",\r\n \"reduce\",\r\n \"reflect\",\r\n \"reform\",\r\n \"refuse\",\r\n \"region\",\r\n \"regret\",\r\n \"regular\",\r\n \"reject\",\r\n \"relax\",\r\n \"release\",\r\n \"relief\",\r\n \"rely\",\r\n \"remain\",\r\n \"remember\",\r\n \"remind\",\r\n \"remove\",\r\n \"render\",\r\n \"renew\",\r\n \"rent\",\r\n \"reopen\",\r\n \"repair\",\r\n \"repeat\",\r\n \"replace\",\r\n \"report\",\r\n \"require\",\r\n \"rescue\",\r\n \"resemble\",\r\n \"resist\",\r\n \"resource\",\r\n \"response\",\r\n \"result\",\r\n \"retire\",\r\n \"retreat\",\r\n \"return\",\r\n \"reunion\",\r\n \"reveal\",\r\n \"review\",\r\n \"reward\",\r\n \"rhythm\",\r\n \"rib\",\r\n \"ribbon\",\r\n \"rice\",\r\n \"rich\",\r\n \"ride\",\r\n \"ridge\",\r\n \"rifle\",\r\n \"right\",\r\n \"rigid\",\r\n \"ring\",\r\n \"riot\",\r\n \"ripple\",\r\n \"risk\",\r\n \"ritual\",\r\n \"rival\",\r\n \"river\",\r\n \"road\",\r\n \"roast\",\r\n \"robot\",\r\n \"robust\",\r\n \"rocket\",\r\n \"romance\",\r\n \"roof\",\r\n \"rookie\",\r\n \"room\",\r\n \"rose\",\r\n \"rotate\",\r\n \"rough\",\r\n \"round\",\r\n \"route\",\r\n \"royal\",\r\n \"rubber\",\r\n \"rude\",\r\n \"rug\",\r\n \"rule\",\r\n \"run\",\r\n \"runway\",\r\n \"rural\",\r\n \"sad\",\r\n \"saddle\",\r\n \"sadness\",\r\n \"safe\",\r\n \"sail\",\r\n \"salad\",\r\n \"salmon\",\r\n \"salon\",\r\n \"salt\",\r\n \"salute\",\r\n \"same\",\r\n \"sample\",\r\n \"sand\",\r\n \"satisfy\",\r\n \"satoshi\",\r\n \"sauce\",\r\n \"sausage\",\r\n \"save\",\r\n \"say\",\r\n \"scale\",\r\n \"scan\",\r\n \"scare\",\r\n \"scatter\",\r\n \"scene\",\r\n \"scheme\",\r\n \"school\",\r\n \"science\",\r\n \"scissors\",\r\n \"scorpion\",\r\n \"scout\",\r\n \"scrap\",\r\n \"screen\",\r\n \"script\",\r\n \"scrub\",\r\n \"sea\",\r\n \"search\",\r\n \"season\",\r\n \"seat\",\r\n \"second\",\r\n \"secret\",\r\n \"section\",\r\n \"security\",\r\n \"seed\",\r\n \"seek\",\r\n \"segment\",\r\n \"select\",\r\n \"sell\",\r\n \"seminar\",\r\n \"senior\",\r\n \"sense\",\r\n \"sentence\",\r\n \"series\",\r\n \"service\",\r\n \"session\",\r\n \"settle\",\r\n \"setup\",\r\n \"seven\",\r\n \"shadow\",\r\n \"shaft\",\r\n \"shallow\",\r\n \"share\",\r\n \"shed\",\r\n \"shell\",\r\n \"sheriff\",\r\n \"shield\",\r\n \"shift\",\r\n \"shine\",\r\n \"ship\",\r\n \"shiver\",\r\n \"shock\",\r\n \"shoe\",\r\n \"shoot\",\r\n \"shop\",\r\n \"short\",\r\n \"shoulder\",\r\n \"shove\",\r\n \"shrimp\",\r\n \"shrug\",\r\n \"shuffle\",\r\n \"shy\",\r\n \"sibling\",\r\n \"sick\",\r\n \"side\",\r\n \"siege\",\r\n \"sight\",\r\n \"sign\",\r\n \"silent\",\r\n \"silk\",\r\n \"silly\",\r\n \"silver\",\r\n \"similar\",\r\n \"simple\",\r\n \"since\",\r\n \"sing\",\r\n \"siren\",\r\n \"sister\",\r\n \"situate\",\r\n \"six\",\r\n \"size\",\r\n \"skate\",\r\n \"sketch\",\r\n \"ski\",\r\n \"skill\",\r\n \"skin\",\r\n \"skirt\",\r\n \"skull\",\r\n \"slab\",\r\n \"slam\",\r\n \"sleep\",\r\n \"slender\",\r\n \"slice\",\r\n \"slide\",\r\n \"slight\",\r\n \"slim\",\r\n \"slogan\",\r\n \"slot\",\r\n \"slow\",\r\n \"slush\",\r\n \"small\",\r\n \"smart\",\r\n \"smile\",\r\n \"smoke\",\r\n \"smooth\",\r\n \"snack\",\r\n \"snake\",\r\n \"snap\",\r\n \"sniff\",\r\n \"snow\",\r\n \"soap\",\r\n \"soccer\",\r\n \"social\",\r\n \"sock\",\r\n \"soda\",\r\n \"soft\",\r\n \"solar\",\r\n \"soldier\",\r\n \"solid\",\r\n \"solution\",\r\n \"solve\",\r\n \"someone\",\r\n \"song\",\r\n \"soon\",\r\n \"sorry\",\r\n \"sort\",\r\n \"soul\",\r\n \"sound\",\r\n \"soup\",\r\n \"source\",\r\n \"south\",\r\n \"space\",\r\n \"spare\",\r\n \"spatial\",\r\n \"spawn\",\r\n \"speak\",\r\n \"special\",\r\n \"speed\",\r\n \"spell\",\r\n \"spend\",\r\n \"sphere\",\r\n \"spice\",\r\n \"spider\",\r\n \"spike\",\r\n \"spin\",\r\n \"spirit\",\r\n \"split\",\r\n \"spoil\",\r\n \"sponsor\",\r\n \"spoon\",\r\n \"sport\",\r\n \"spot\",\r\n \"spray\",\r\n \"spread\",\r\n \"spring\",\r\n \"spy\",\r\n \"square\",\r\n \"squeeze\",\r\n \"squirrel\",\r\n \"stable\",\r\n \"stadium\",\r\n \"staff\",\r\n \"stage\",\r\n \"stairs\",\r\n \"stamp\",\r\n \"stand\",\r\n \"start\",\r\n \"state\",\r\n \"stay\",\r\n \"steak\",\r\n \"steel\",\r\n \"stem\",\r\n \"step\",\r\n \"stereo\",\r\n \"stick\",\r\n \"still\",\r\n \"sting\",\r\n \"stock\",\r\n \"stomach\",\r\n \"stone\",\r\n \"stool\",\r\n \"story\",\r\n \"stove\",\r\n \"strategy\",\r\n \"street\",\r\n \"strike\",\r\n \"strong\",\r\n \"struggle\",\r\n \"student\",\r\n \"stuff\",\r\n \"stumble\",\r\n \"style\",\r\n \"subject\",\r\n \"submit\",\r\n \"subway\",\r\n \"success\",\r\n \"such\",\r\n \"sudden\",\r\n \"suffer\",\r\n \"sugar\",\r\n \"suggest\",\r\n \"suit\",\r\n \"summer\",\r\n \"sun\",\r\n \"sunny\",\r\n \"sunset\",\r\n \"super\",\r\n \"supply\",\r\n \"supreme\",\r\n \"sure\",\r\n \"surface\",\r\n \"surge\",\r\n \"surprise\",\r\n \"surround\",\r\n \"survey\",\r\n \"suspect\",\r\n \"sustain\",\r\n \"swallow\",\r\n \"swamp\",\r\n \"swap\",\r\n \"swarm\",\r\n \"swear\",\r\n \"sweet\",\r\n \"swift\",\r\n \"swim\",\r\n \"swing\",\r\n \"switch\",\r\n \"sword\",\r\n \"symbol\",\r\n \"symptom\",\r\n \"syrup\",\r\n \"system\",\r\n \"table\",\r\n \"tackle\",\r\n \"tag\",\r\n \"tail\",\r\n \"talent\",\r\n \"talk\",\r\n \"tank\",\r\n \"tape\",\r\n \"target\",\r\n \"task\",\r\n \"taste\",\r\n \"tattoo\",\r\n \"taxi\",\r\n \"teach\",\r\n \"team\",\r\n \"tell\",\r\n \"ten\",\r\n \"tenant\",\r\n \"tennis\",\r\n \"tent\",\r\n \"term\",\r\n \"test\",\r\n \"text\",\r\n \"thank\",\r\n \"that\",\r\n \"theme\",\r\n \"then\",\r\n \"theory\",\r\n \"there\",\r\n \"they\",\r\n \"thing\",\r\n \"this\",\r\n \"thought\",\r\n \"three\",\r\n \"thrive\",\r\n \"throw\",\r\n \"thumb\",\r\n \"thunder\",\r\n \"ticket\",\r\n \"tide\",\r\n \"tiger\",\r\n \"tilt\",\r\n \"timber\",\r\n \"time\",\r\n \"tiny\",\r\n \"tip\",\r\n \"tired\",\r\n \"tissue\",\r\n \"title\",\r\n \"toast\",\r\n \"tobacco\",\r\n \"today\",\r\n \"toddler\",\r\n \"toe\",\r\n \"together\",\r\n \"toilet\",\r\n \"token\",\r\n \"tomato\",\r\n \"tomorrow\",\r\n \"tone\",\r\n \"tongue\",\r\n \"tonight\",\r\n \"tool\",\r\n \"tooth\",\r\n \"top\",\r\n \"topic\",\r\n \"topple\",\r\n \"torch\",\r\n \"tornado\",\r\n \"tortoise\",\r\n \"toss\",\r\n \"total\",\r\n \"tourist\",\r\n \"toward\",\r\n \"tower\",\r\n \"town\",\r\n \"toy\",\r\n \"track\",\r\n \"trade\",\r\n \"traffic\",\r\n \"tragic\",\r\n \"train\",\r\n \"transfer\",\r\n \"trap\",\r\n \"trash\",\r\n \"travel\",\r\n \"tray\",\r\n \"treat\",\r\n \"tree\",\r\n \"trend\",\r\n \"trial\",\r\n \"tribe\",\r\n \"trick\",\r\n \"trigger\",\r\n \"trim\",\r\n \"trip\",\r\n \"trophy\",\r\n \"trouble\",\r\n \"truck\",\r\n \"true\",\r\n \"truly\",\r\n \"trumpet\",\r\n \"trust\",\r\n \"truth\",\r\n \"try\",\r\n \"tube\",\r\n \"tuition\",\r\n \"tumble\",\r\n \"tuna\",\r\n \"tunnel\",\r\n \"turkey\",\r\n \"turn\",\r\n \"turtle\",\r\n \"twelve\",\r\n \"twenty\",\r\n \"twice\",\r\n \"twin\",\r\n \"twist\",\r\n \"two\",\r\n \"type\",\r\n \"typical\",\r\n \"ugly\",\r\n \"umbrella\",\r\n \"unable\",\r\n \"unaware\",\r\n \"uncle\",\r\n \"uncover\",\r\n \"under\",\r\n \"undo\",\r\n \"unfair\",\r\n \"unfold\",\r\n \"unhappy\",\r\n \"uniform\",\r\n \"unique\",\r\n \"unit\",\r\n \"universe\",\r\n \"unknown\",\r\n \"unlock\",\r\n \"until\",\r\n \"unusual\",\r\n \"unveil\",\r\n \"update\",\r\n \"upgrade\",\r\n \"uphold\",\r\n \"upon\",\r\n \"upper\",\r\n \"upset\",\r\n \"urban\",\r\n \"urge\",\r\n \"usage\",\r\n \"use\",\r\n \"used\",\r\n \"useful\",\r\n \"useless\",\r\n \"usual\",\r\n \"utility\",\r\n \"vacant\",\r\n \"vacuum\",\r\n \"vague\",\r\n \"valid\",\r\n \"valley\",\r\n \"valve\",\r\n \"van\",\r\n \"vanish\",\r\n \"vapor\",\r\n \"various\",\r\n \"vast\",\r\n \"vault\",\r\n \"vehicle\",\r\n \"velvet\",\r\n \"vendor\",\r\n \"venture\",\r\n \"venue\",\r\n \"verb\",\r\n \"verify\",\r\n \"version\",\r\n \"very\",\r\n \"vessel\",\r\n \"veteran\",\r\n \"viable\",\r\n \"vibrant\",\r\n \"vicious\",\r\n \"victory\",\r\n \"video\",\r\n \"view\",\r\n \"village\",\r\n \"vintage\",\r\n \"violin\",\r\n \"virtual\",\r\n \"virus\",\r\n \"visa\",\r\n \"visit\",\r\n \"visual\",\r\n \"vital\",\r\n \"vivid\",\r\n \"vocal\",\r\n \"voice\",\r\n \"void\",\r\n \"volcano\",\r\n \"volume\",\r\n \"vote\",\r\n \"voyage\",\r\n \"wage\",\r\n \"wagon\",\r\n \"wait\",\r\n \"walk\",\r\n \"wall\",\r\n \"walnut\",\r\n \"want\",\r\n \"warfare\",\r\n \"warm\",\r\n \"warrior\",\r\n \"wash\",\r\n \"wasp\",\r\n \"waste\",\r\n \"water\",\r\n \"wave\",\r\n \"way\",\r\n \"wealth\",\r\n \"weapon\",\r\n \"wear\",\r\n \"weasel\",\r\n \"weather\",\r\n \"web\",\r\n \"wedding\",\r\n \"weekend\",\r\n \"weird\",\r\n \"welcome\",\r\n \"west\",\r\n \"wet\",\r\n \"whale\",\r\n \"what\",\r\n \"wheat\",\r\n \"wheel\",\r\n \"when\",\r\n \"where\",\r\n \"whip\",\r\n \"whisper\",\r\n \"wide\",\r\n \"width\",\r\n \"wife\",\r\n \"wild\",\r\n \"will\",\r\n \"win\",\r\n \"window\",\r\n \"wine\",\r\n \"wing\",\r\n \"wink\",\r\n \"winner\",\r\n \"winter\",\r\n \"wire\",\r\n \"wisdom\",\r\n \"wise\",\r\n \"wish\",\r\n \"witness\",\r\n \"wolf\",\r\n \"woman\",\r\n \"wonder\",\r\n \"wood\",\r\n \"wool\",\r\n \"word\",\r\n \"work\",\r\n \"world\",\r\n \"worry\",\r\n \"worth\",\r\n \"wrap\",\r\n \"wreck\",\r\n \"wrestle\",\r\n \"wrist\",\r\n \"write\",\r\n \"wrong\",\r\n \"yard\",\r\n \"year\",\r\n \"yellow\",\r\n \"you\",\r\n \"young\",\r\n \"youth\",\r\n \"zebra\",\r\n \"zero\",\r\n \"zone\",\r\n \"zoo\"\r\n];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { Converter, RandomHelper } from \"@iota/util.js\";\r\nimport { Sha256 } from \"../hashes/sha256.mjs\";\r\nimport { Pbkdf2 } from \"./pbkdf2.mjs\";\r\nimport { english } from \"./wordlists/english.mjs\";\r\n/**\r\n * Implementation of Bip39 for mnemonic generation.\r\n */\r\nexport class Bip39 {\r\n /**\r\n * Set the wordlist and joining character.\r\n * @param wordlistData Array of words.\r\n * @param joiningChar The character to join the words with.\r\n */\r\n static setWordList(wordlistData, joiningChar = \" \") {\r\n Bip39._wordlist = wordlistData;\r\n Bip39._joiningChar = joiningChar;\r\n }\r\n /**\r\n * Generate a random mnemonic.\r\n * @param length The length of the mnemonic to generate, defaults to 256.\r\n * @returns The random mnemonic.\r\n */\r\n static randomMnemonic(length = 256) {\r\n if (length % 32 !== 0) {\r\n throw new Error(\"The length must be a multiple of 32\");\r\n }\r\n const randomBytes = RandomHelper.generate(length / 8);\r\n return Bip39.entropyToMnemonic(randomBytes);\r\n }\r\n /**\r\n * Generate a mnemonic from the entropy.\r\n * @param entropy The entropy to generate.\r\n * @returns The mnemonic.\r\n */\r\n static entropyToMnemonic(entropy) {\r\n if (!Bip39._wordlist) {\r\n Bip39.setWordList(english, \" \");\r\n }\r\n if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\r\n throw new Error(`The length of the entropy is invalid, it should be a multiple of 4, >= 16 and <= 32, it is ${entropy.length}`);\r\n }\r\n const bin = `${Converter.bytesToBinary(entropy)}${Bip39.entropyChecksumBits(entropy)}`;\r\n const mnemonic = [];\r\n for (let i = 0; i < bin.length / 11; i++) {\r\n const wordIndexBits = bin.slice(i * 11, (i + 1) * 11);\r\n const wordIndex = Number.parseInt(wordIndexBits, 2);\r\n mnemonic.push(Bip39._wordlist[wordIndex]);\r\n }\r\n return mnemonic.join(Bip39._joiningChar);\r\n }\r\n /**\r\n * Convert a mnemonic to a seed.\r\n * @param mnemonic The mnemonic to convert.\r\n * @param password The password to apply to the seed generation.\r\n * @param iterations The number of iterations to perform on the password function, defaults to 2048.\r\n * @param keyLength The size of the key length to generate, defaults to 64.\r\n * @returns The seed.\r\n */\r\n static mnemonicToSeed(mnemonic, password, iterations = 2048, keyLength = 64) {\r\n const mnemonicBytes = Converter.utf8ToBytes(mnemonic.normalize(\"NFKD\"));\r\n const salt = Converter.utf8ToBytes(`mnemonic${(password !== null && password !== void 0 ? password : \"\").normalize(\"NFKD\")}`);\r\n return Pbkdf2.sha512(mnemonicBytes, salt, iterations, keyLength);\r\n }\r\n /**\r\n * Convert the mnemonic back to entropy.\r\n * @param mnemonic The mnemonic to convert.\r\n * @returns The entropy.\r\n */\r\n static mnemonicToEntropy(mnemonic) {\r\n if (!Bip39._wordlist) {\r\n Bip39.setWordList(english, \" \");\r\n }\r\n const words = mnemonic.normalize(\"NFKD\").split(Bip39._joiningChar);\r\n if (words.length % 3 !== 0) {\r\n throw new Error(`Invalid mnemonic the number of words should be a multiple of 3, it is ${words.length}`);\r\n }\r\n const bits = words\r\n .map(word => {\r\n const index = Bip39._wordlist.indexOf(word);\r\n if (index === -1) {\r\n throw new Error(`The mnemonic contains a word not in the wordlist ${word}`);\r\n }\r\n return index.toString(2).padStart(11, \"0\");\r\n })\r\n .join(\"\");\r\n const dividerIndex = Math.floor(bits.length / 33) * 32;\r\n const entropyBits = bits.slice(0, dividerIndex);\r\n const checksumBits = bits.slice(dividerIndex);\r\n const entropy = Converter.binaryToBytes(entropyBits);\r\n if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\r\n throw new Error(\"The length of the entropy is invalid\");\r\n }\r\n const newChecksum = Bip39.entropyChecksumBits(entropy);\r\n if (newChecksum !== checksumBits) {\r\n throw new Error(`The checksum does not match ${newChecksum} != ${checksumBits}.`);\r\n }\r\n return entropy;\r\n }\r\n /**\r\n * Calculate the entropy checksum.\r\n * @param entropy The entropy to calculate the checksum for.\r\n * @returns The checksum.\r\n */\r\n static entropyChecksumBits(entropy) {\r\n const hash = Sha256.sum256(entropy);\r\n const bits = entropy.length * 8;\r\n const hashbits = Converter.bytesToBinary(hash);\r\n return hashbits.slice(0, bits / 32);\r\n }\r\n}\r\n/**\r\n * The character to join the mnemonics with.\r\n * @internal\r\n */\r\nBip39._joiningChar = \" \"; // \\u3000 for japanese\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/**\r\n * Array helper methods.\r\n */\r\nexport class ArrayHelper {\r\n /**\r\n * Are the two array equals.\r\n * @param array1 The first array.\r\n * @param array2 The second array.\r\n * @returns True if the arrays are equal.\r\n */\r\n static equal(array1, array2) {\r\n if (!array1 || !array2 || array1.length !== array2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < array1.length; i++) {\r\n if (array1[i] !== array2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport bigInt from \"big-integer\";\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\n// @internal\r\nexport const BIG_1_SHIFTL_20 = bigInt(1).shiftLeft(20);\r\n// @internal\r\nexport const BIG_1_SHIFTL_24 = bigInt(1).shiftLeft(24);\r\n// @internal\r\nexport const BIG_1_SHIFTL_25 = bigInt(1).shiftLeft(25);\r\n// @internal\r\nexport const BIG_ARR = [\r\n bigInt(0),\r\n bigInt(1),\r\n bigInt(2),\r\n bigInt(3),\r\n bigInt(4),\r\n bigInt(5),\r\n bigInt(6),\r\n bigInt(7),\r\n bigInt(8),\r\n bigInt(9),\r\n bigInt(10),\r\n bigInt(11),\r\n bigInt(12),\r\n bigInt(13),\r\n bigInt(14),\r\n bigInt(15),\r\n bigInt(16),\r\n bigInt(17),\r\n bigInt(18),\r\n bigInt(19),\r\n bigInt(20),\r\n bigInt(21),\r\n bigInt(22),\r\n bigInt(23),\r\n bigInt(24),\r\n bigInt(25),\r\n bigInt(26)\r\n];\r\n// @internal\r\nexport const BIG_38 = bigInt(38);\r\n// @internal\r\nexport const BIG_666643 = bigInt(666643);\r\n// @internal\r\nexport const BIG_470296 = bigInt(470296);\r\n// @internal\r\nexport const BIG_654183 = bigInt(654183);\r\n// @internal\r\nexport const BIG_997805 = bigInt(997805);\r\n// @internal\r\nexport const BIG_136657 = bigInt(136657);\r\n// @internal\r\nexport const BIG_683901 = bigInt(683901);\r\n// @internal\r\nexport const BIG_2097151 = bigInt(2097151);\r\n// @internal\r\nexport const BIG_8388607 = bigInt(8388607);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/* eslint-disable newline-per-chained-call */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { BigIntHelper } from \"@iota/util.js\";\r\nimport bigInt from \"big-integer\";\r\nimport { BIG_1_SHIFTL_24, BIG_1_SHIFTL_25, BIG_38, BIG_8388607, BIG_ARR } from \"./bigIntCommon.mjs\";\r\n/**\r\n * Class for field element operations.\r\n * FieldElement represents an element of the field GF(2^255 - 19). An element\r\n * t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77\r\n * t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on\r\n * context.\r\n */\r\nexport class FieldElement {\r\n /**\r\n * Create a new instance of FieldElement.\r\n * @param values A set of values to initialize the array.\r\n */\r\n constructor(values) {\r\n this.data = new Int32Array(FieldElement.FIELD_ELEMENT_SIZE);\r\n if (values) {\r\n this.data.set(values);\r\n }\r\n }\r\n /**\r\n * Calculates h = f * g\r\n * Can overlap h with f or g.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n * |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n *\r\n * Notes on implementation strategy:\r\n *\r\n * Using schoolbook multiplication.\r\n * Karatsuba would save a little in some cost models.\r\n *\r\n * Most multiplications by 2 and 19 are 32-bit precomputations;\r\n * cheaper than 64-bit postcomputations.\r\n *\r\n * There is one remaining multiplication by 19 in the carry chain;\r\n * one *19 precomputation can be merged into this,\r\n * but the resulting data flow is considerably less clean.\r\n *\r\n * There are 12 carries below.\r\n * 10 of them are 2-way parallelizable and vectorizable.\r\n * Can get away with 11 carries, but then data flow is much deeper.\r\n *\r\n * With tighter constraints on inputs, can squeeze carries into: number.\r\n * @param f The f element.\r\n * @param g The g element.\r\n */\r\n mul(f, g) {\r\n const f0 = bigInt(f.data[0]);\r\n const f1 = bigInt(f.data[1]);\r\n const f2 = bigInt(f.data[2]);\r\n const f3 = bigInt(f.data[3]);\r\n const f4 = bigInt(f.data[4]);\r\n const f5 = bigInt(f.data[5]);\r\n const f6 = bigInt(f.data[6]);\r\n const f7 = bigInt(f.data[7]);\r\n const f8 = bigInt(f.data[8]);\r\n const f9 = bigInt(f.data[9]);\r\n const f12 = bigInt(2 * f.data[1]);\r\n const f32 = bigInt(2 * f.data[3]);\r\n const f52 = bigInt(2 * f.data[5]);\r\n const f72 = bigInt(2 * f.data[7]);\r\n const f92 = bigInt(2 * f.data[9]);\r\n const g0 = bigInt(g.data[0]);\r\n const g1 = bigInt(g.data[1]);\r\n const g2 = bigInt(g.data[2]);\r\n const g3 = bigInt(g.data[3]);\r\n const g4 = bigInt(g.data[4]);\r\n const g5 = bigInt(g.data[5]);\r\n const g6 = bigInt(g.data[6]);\r\n const g7 = bigInt(g.data[7]);\r\n const g8 = bigInt(g.data[8]);\r\n const g9 = bigInt(g.data[9]);\r\n const g119 = bigInt(19 * g.data[1]); /* 1.4*2^29 */\r\n const g219 = bigInt(19 * g.data[2]); /* 1.4*2^30; still ok */\r\n const g319 = bigInt(19 * g.data[3]);\r\n const g419 = bigInt(19 * g.data[4]);\r\n const g519 = bigInt(19 * g.data[5]);\r\n const g619 = bigInt(19 * g.data[6]);\r\n const g719 = bigInt(19 * g.data[7]);\r\n const g819 = bigInt(19 * g.data[8]);\r\n const g919 = bigInt(19 * g.data[9]);\r\n const h0 = f0\r\n .times(g0)\r\n .plus(f12.times(g919))\r\n .plus(f2.times(g819))\r\n .plus(f32.times(g719))\r\n .plus(f4.times(g619))\r\n .plus(f52.times(g519))\r\n .plus(f6.times(g419))\r\n .plus(f72.times(g319))\r\n .plus(f8.times(g219))\r\n .plus(f92.times(g119));\r\n const h1 = f0\r\n .times(g1)\r\n .plus(f1.times(g0))\r\n .plus(f2.times(g919))\r\n .plus(f3.times(g819))\r\n .plus(f4.times(g719))\r\n .plus(f5.times(g619))\r\n .plus(f6.times(g519))\r\n .plus(f7.times(g419))\r\n .plus(f8.times(g319))\r\n .plus(f9.times(g219));\r\n const h2 = f0\r\n .times(g2)\r\n .plus(f12.times(g1))\r\n .plus(f2.times(g0))\r\n .plus(f32.times(g919))\r\n .plus(f4.times(g819))\r\n .plus(f52.times(g719))\r\n .plus(f6.times(g619))\r\n .plus(f72.times(g519))\r\n .plus(f8.times(g419))\r\n .plus(f92.times(g319));\r\n const h3 = f0\r\n .times(g3)\r\n .plus(f1.times(g2))\r\n .plus(f2.times(g1))\r\n .plus(f3.times(g0))\r\n .plus(f4.times(g919))\r\n .plus(f5.times(g819))\r\n .plus(f6.times(g719))\r\n .plus(f7.times(g619))\r\n .plus(f8.times(g519))\r\n .plus(f9.times(g419));\r\n const h4 = f0\r\n .times(g4)\r\n .plus(f12.times(g3))\r\n .plus(f2.times(g2))\r\n .plus(f32.times(g1))\r\n .plus(f4.times(g0))\r\n .plus(f52.times(g919))\r\n .plus(f6.times(g819))\r\n .plus(f72.times(g719))\r\n .plus(f8.times(g619))\r\n .plus(f92.times(g519));\r\n const h5 = f0\r\n .times(g5)\r\n .plus(f1.times(g4))\r\n .plus(f2.times(g3))\r\n .plus(f3.times(g2))\r\n .plus(f4.times(g1))\r\n .plus(f5.times(g0))\r\n .plus(f6.times(g919))\r\n .plus(f7.times(g819))\r\n .plus(f8.times(g719))\r\n .plus(f9.times(g619));\r\n const h6 = f0\r\n .times(g6)\r\n .plus(f12.times(g5))\r\n .plus(f2.times(g4))\r\n .plus(f32.times(g3))\r\n .plus(f4.times(g2))\r\n .plus(f52.times(g1))\r\n .plus(f6.times(g0))\r\n .plus(f72.times(g919))\r\n .plus(f8.times(g819))\r\n .plus(f92.times(g719));\r\n const h7 = f0\r\n .times(g7)\r\n .plus(f1.times(g6))\r\n .plus(f2.times(g5))\r\n .plus(f3.times(g4))\r\n .plus(f4.times(g3))\r\n .plus(f5.times(g2))\r\n .plus(f6.times(g1))\r\n .plus(f7.times(g0))\r\n .plus(f8.times(g919))\r\n .plus(f9.times(g819));\r\n const h8 = f0\r\n .times(g8)\r\n .plus(f12.times(g7))\r\n .plus(f2.times(g6))\r\n .plus(f32.times(g5))\r\n .plus(f4.times(g4))\r\n .plus(f52.times(g3))\r\n .plus(f6.times(g2))\r\n .plus(f72.times(g1))\r\n .plus(f8.times(g0))\r\n .plus(f92.times(g919));\r\n const h9 = f0\r\n .times(g9)\r\n .plus(f1.times(g8))\r\n .plus(f2.times(g7))\r\n .plus(f3.times(g6))\r\n .plus(f4.times(g5))\r\n .plus(f5.times(g4))\r\n .plus(f6.times(g3))\r\n .plus(f7.times(g2))\r\n .plus(f8.times(g1))\r\n .plus(f9.times(g0));\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * Combine the element.\r\n * @param h0 The h0 component.\r\n * @param h1 The h1 component.\r\n * @param h2 The h2 component.\r\n * @param h3 The h3 component.\r\n * @param h4 The h4 component.\r\n * @param h5 The h5 component.\r\n * @param h6 The h6 component.\r\n * @param h7 The h7 component.\r\n * @param h8 The h8 component.\r\n * @param h9 The h9 component.\r\n */\r\n combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) {\r\n let c0;\r\n let c4;\r\n /*\r\n |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38))\r\n i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8\r\n |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19))\r\n i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9\r\n */\r\n c0 = h0.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h1 = h1.plus(c0);\r\n h0 = h0.minus(c0.shiftLeft(BIG_ARR[26]));\r\n c4 = h4.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h5 = h5.plus(c4);\r\n h4 = h4.minus(c4.shiftLeft(BIG_ARR[26]));\r\n /* |h0| <= 2^25 */\r\n /* |h4| <= 2^25 */\r\n /* |h1| <= 1.51*2^58 */\r\n /* |h5| <= 1.51*2^58 */\r\n const c1 = h1.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h2 = h2.plus(c1);\r\n h1 = h1.minus(c1.shiftLeft(BIG_ARR[25]));\r\n const c5 = h5.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h6 = h6.plus(c5);\r\n h5 = h5.minus(c5.shiftLeft(BIG_ARR[25]));\r\n /* |h1| <= 2^24; from now on fits into: number */\r\n /* |h5| <= 2^24; from now on fits into: number */\r\n /* |h2| <= 1.21*2^59 */\r\n /* |h6| <= 1.21*2^59 */\r\n const c2 = h2.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h3 = h3.plus(c2);\r\n h2 = h2.minus(c2.shiftLeft(BIG_ARR[26]));\r\n const c6 = h6.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h7 = h7.plus(c6);\r\n h6 = h6.minus(c6.shiftLeft(BIG_ARR[26]));\r\n /* |h2| <= 2^25; from now on fits into: number unchanged */\r\n /* |h6| <= 2^25; from now on fits into: number unchanged */\r\n /* |h3| <= 1.51*2^58 */\r\n /* |h7| <= 1.51*2^58 */\r\n const c3 = h3.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h4 = h4.plus(c3);\r\n h3 = h3.minus(c3.shiftLeft(BIG_ARR[25]));\r\n const c7 = h7.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h8 = h8.plus(c7);\r\n h7 = h7.minus(c7.shiftLeft(BIG_ARR[25]));\r\n /* |h3| <= 2^24; from now on fits into: number unchanged */\r\n /* |h7| <= 2^24; from now on fits into: number unchanged */\r\n /* |h4| <= 1.52*2^33 */\r\n /* |h8| <= 1.52*2^33 */\r\n c4 = h4.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h5 = h5.plus(c4);\r\n h4 = h4.minus(c4.shiftLeft(BIG_ARR[26]));\r\n const c8 = h8.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h9 = h9.plus(c8);\r\n h8 = h8.minus(c8.shiftLeft(BIG_ARR[26]));\r\n /* |h4| <= 2^25; from now on fits into: number unchanged */\r\n /* |h8| <= 2^25; from now on fits into: number unchanged */\r\n /* |h5| <= 1.01*2^24 */\r\n /* |h9| <= 1.51*2^58 */\r\n const c9 = h9.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h0 = h0.plus(c9.times(BIG_ARR[19]));\r\n h9 = h9.minus(c9.shiftLeft(BIG_ARR[25]));\r\n /* |h9| <= 2^24; from now on fits into: number unchanged */\r\n /* |h0| <= 1.8*2^37 */\r\n c0 = h0.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h1 = h1.plus(c0);\r\n h0 = h0.minus(c0.shiftLeft(BIG_ARR[26]));\r\n /* |h0| <= 2^25; from now on fits into: number unchanged */\r\n /* |h1| <= 1.01*2^24 */\r\n this.data[0] = Number(h0);\r\n this.data[1] = Number(h1);\r\n this.data[2] = Number(h2);\r\n this.data[3] = Number(h3);\r\n this.data[4] = Number(h4);\r\n this.data[5] = Number(h5);\r\n this.data[6] = Number(h6);\r\n this.data[7] = Number(h7);\r\n this.data[8] = Number(h8);\r\n this.data[9] = Number(h9);\r\n }\r\n /**\r\n * FieldElement.square calculates h = f*f. Can overlap h with f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n * @param f The f element.\r\n */\r\n square(f) {\r\n const { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 } = this.internalSquare(f);\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * FieldElement.square calculates h = f*f. Can overlap h with f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n * @param f The f element.\r\n * @returns The components.\r\n */\r\n internalSquare(f) {\r\n const f0 = bigInt(f.data[0]);\r\n const f1 = bigInt(f.data[1]);\r\n const f2 = bigInt(f.data[2]);\r\n const f3 = bigInt(f.data[3]);\r\n const f4 = bigInt(f.data[4]);\r\n const f5 = bigInt(f.data[5]);\r\n const f6 = bigInt(f.data[6]);\r\n const f7 = bigInt(f.data[7]);\r\n const f8 = bigInt(f.data[8]);\r\n const f9 = bigInt(f.data[9]);\r\n const f02 = bigInt(2 * f.data[0]);\r\n const f12 = bigInt(2 * f.data[1]);\r\n const f22 = bigInt(2 * f.data[2]);\r\n const f32 = bigInt(2 * f.data[3]);\r\n const f42 = bigInt(2 * f.data[4]);\r\n const f52 = bigInt(2 * f.data[5]);\r\n const f62 = bigInt(2 * f.data[6]);\r\n const f72 = bigInt(2 * f.data[7]);\r\n const f538 = BIG_38.times(f5); // 1.31*2^30\r\n const f619 = BIG_ARR[19].times(f6); // 1.31*2^30\r\n const f738 = BIG_38.times(f7); // 1.31*2^30\r\n const f819 = BIG_ARR[19].times(f8); // 1.31*2^30\r\n const f938 = BIG_38.times(f9); // 1.31*2^30\r\n return {\r\n h0: f0\r\n .times(f0)\r\n .plus(f12.times(f938))\r\n .plus(f22.times(f819))\r\n .plus(f32.times(f738))\r\n .plus(f42.times(f619))\r\n .plus(f5.times(f538)),\r\n h1: f02.times(f1).plus(f2.times(f938)).plus(f32.times(f819)).plus(f4.times(f738)).plus(f52.times(f619)),\r\n h2: f02\r\n .times(f2)\r\n .plus(f12.times(f1))\r\n .plus(f32.times(f938))\r\n .plus(f42.times(f819))\r\n .plus(f52.times(f738))\r\n .plus(f6.times(f619)),\r\n h3: f02.times(f3).plus(f12.times(f2)).plus(f4.times(f938)).plus(f52.times(f819)).plus(f6.times(f738)),\r\n h4: f02\r\n .times(f4)\r\n .plus(f12.times(f32))\r\n .plus(f2.times(f2))\r\n .plus(f52.times(f938))\r\n .plus(f62.times(f819))\r\n .plus(f7.times(f738)),\r\n h5: f02.times(f5).plus(f12.times(f4)).plus(f22.times(f3)).plus(f6.times(f938)).plus(f72.times(f819)),\r\n h6: f02\r\n .times(f6)\r\n .plus(f12.times(f52))\r\n .plus(f22.times(f4))\r\n .plus(f32.times(f3))\r\n .plus(f72.times(f938))\r\n .plus(f8.times(f819)),\r\n h7: f02.times(f7).plus(f12.times(f6)).plus(f22.times(f5)).plus(f32.times(f4)).plus(f8.times(f938)),\r\n h8: f02\r\n .times(f8)\r\n .plus(f12.times(f72))\r\n .plus(f22.times(f6))\r\n .plus(f32.times(f52))\r\n .plus(f4.times(f4))\r\n .plus(f9.times(f938)),\r\n h9: f02.times(f9).plus(f12.times(f8)).plus(f22.times(f7)).plus(f32.times(f6)).plus(f42.times(f5))\r\n };\r\n }\r\n /**\r\n * Square2 sets h = 2 * f * f.\r\n *\r\n * Can overlap h with f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.\r\n * See fe_mul.c for discussion of implementation strategy.\r\n * @param f The f element.\r\n */\r\n square2(f) {\r\n let { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 } = this.internalSquare(f);\r\n h0 = h0.plus(h0);\r\n h1 = h1.plus(h1);\r\n h2 = h2.plus(h2);\r\n h3 = h3.plus(h3);\r\n h4 = h4.plus(h4);\r\n h5 = h5.plus(h5);\r\n h6 = h6.plus(h6);\r\n h7 = h7.plus(h7);\r\n h8 = h8.plus(h8);\r\n h9 = h9.plus(h9);\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * Add the elements and store in this.\r\n * @param a The a element.\r\n * @param b The b element.\r\n */\r\n add(a, b) {\r\n this.data[0] = a.data[0] + b.data[0];\r\n this.data[1] = a.data[1] + b.data[1];\r\n this.data[2] = a.data[2] + b.data[2];\r\n this.data[3] = a.data[3] + b.data[3];\r\n this.data[4] = a.data[4] + b.data[4];\r\n this.data[5] = a.data[5] + b.data[5];\r\n this.data[6] = a.data[6] + b.data[6];\r\n this.data[7] = a.data[7] + b.data[7];\r\n this.data[8] = a.data[8] + b.data[8];\r\n this.data[9] = a.data[9] + b.data[9];\r\n }\r\n /**\r\n * Subtract the elements and store in this.\r\n * @param a The a element.\r\n * @param b The b element.\r\n */\r\n sub(a, b) {\r\n this.data[0] = a.data[0] - b.data[0];\r\n this.data[1] = a.data[1] - b.data[1];\r\n this.data[2] = a.data[2] - b.data[2];\r\n this.data[3] = a.data[3] - b.data[3];\r\n this.data[4] = a.data[4] - b.data[4];\r\n this.data[5] = a.data[5] - b.data[5];\r\n this.data[6] = a.data[6] - b.data[6];\r\n this.data[7] = a.data[7] - b.data[7];\r\n this.data[8] = a.data[8] - b.data[8];\r\n this.data[9] = a.data[9] - b.data[9];\r\n }\r\n /**\r\n * Populate from bytes.\r\n * @param bytes The bytes to populate from.\r\n */\r\n fromBytes(bytes) {\r\n const h0 = BigIntHelper.read4(bytes, 0);\r\n const h1 = BigIntHelper.read3(bytes, 4).shiftLeft(BIG_ARR[6]);\r\n const h2 = BigIntHelper.read3(bytes, 7).shiftLeft(BIG_ARR[5]);\r\n const h3 = BigIntHelper.read3(bytes, 10).shiftLeft(BIG_ARR[3]);\r\n const h4 = BigIntHelper.read3(bytes, 13).shiftLeft(BIG_ARR[2]);\r\n const h5 = BigIntHelper.read4(bytes, 16);\r\n const h6 = BigIntHelper.read3(bytes, 20).shiftLeft(BIG_ARR[7]);\r\n const h7 = BigIntHelper.read3(bytes, 23).shiftLeft(BIG_ARR[5]);\r\n const h8 = BigIntHelper.read3(bytes, 26).shiftLeft(BIG_ARR[4]);\r\n const h9 = BigIntHelper.read3(bytes, 29).and(BIG_8388607).shiftLeft(BIG_ARR[2]);\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * FieldElement.toBytes marshals h to s.\r\n * Preconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n *\r\n * Write p=2^255-19; q=floor(h/p).\r\n * Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).\r\n *\r\n * Proof:\r\n * Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.\r\n * Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4.\r\n *\r\n * Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).\r\n * Then 0> 25;\r\n q = (this.data[0] + q) >> 26;\r\n q = (this.data[1] + q) >> 25;\r\n q = (this.data[2] + q) >> 26;\r\n q = (this.data[3] + q) >> 25;\r\n q = (this.data[4] + q) >> 26;\r\n q = (this.data[5] + q) >> 25;\r\n q = (this.data[6] + q) >> 26;\r\n q = (this.data[7] + q) >> 25;\r\n q = (this.data[8] + q) >> 26;\r\n q = (this.data[9] + q) >> 25;\r\n // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20.\r\n this.data[0] += 19 * q;\r\n // Goal: Output h-2^255 q, which is between 0 and 2^255-20.\r\n carry[0] = this.data[0] >> 26;\r\n this.data[1] += carry[0];\r\n this.data[0] -= carry[0] << 26;\r\n carry[1] = this.data[1] >> 25;\r\n this.data[2] += carry[1];\r\n this.data[1] -= carry[1] << 25;\r\n carry[2] = this.data[2] >> 26;\r\n this.data[3] += carry[2];\r\n this.data[2] -= carry[2] << 26;\r\n carry[3] = this.data[3] >> 25;\r\n this.data[4] += carry[3];\r\n this.data[3] -= carry[3] << 25;\r\n carry[4] = this.data[4] >> 26;\r\n this.data[5] += carry[4];\r\n this.data[4] -= carry[4] << 26;\r\n carry[5] = this.data[5] >> 25;\r\n this.data[6] += carry[5];\r\n this.data[5] -= carry[5] << 25;\r\n carry[6] = this.data[6] >> 26;\r\n this.data[7] += carry[6];\r\n this.data[6] -= carry[6] << 26;\r\n carry[7] = this.data[7] >> 25;\r\n this.data[8] += carry[7];\r\n this.data[7] -= carry[7] << 25;\r\n carry[8] = this.data[8] >> 26;\r\n this.data[9] += carry[8];\r\n this.data[8] -= carry[8] << 26;\r\n carry[9] = this.data[9] >> 25;\r\n this.data[9] -= carry[9] << 25;\r\n // h10 = carry9\r\n // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.\r\n // Have h[0]+...+2^230 h[9] between 0 and 2^255-1;\r\n // evidently 2^255 h10-2^255 q = 0.\r\n // Goal: Output h[0]+...+2^230 h[9].\r\n bytes[0] = Math.trunc(this.data[0]);\r\n bytes[1] = this.data[0] >> 8;\r\n bytes[2] = this.data[0] >> 16;\r\n bytes[3] = (this.data[0] >> 24) | (this.data[1] << 2);\r\n bytes[4] = this.data[1] >> 6;\r\n bytes[5] = this.data[1] >> 14;\r\n bytes[6] = (this.data[1] >> 22) | (this.data[2] << 3);\r\n bytes[7] = this.data[2] >> 5;\r\n bytes[8] = this.data[2] >> 13;\r\n bytes[9] = (this.data[2] >> 21) | (this.data[3] << 5);\r\n bytes[10] = this.data[3] >> 3;\r\n bytes[11] = this.data[3] >> 11;\r\n bytes[12] = (this.data[3] >> 19) | (this.data[4] << 6);\r\n bytes[13] = this.data[4] >> 2;\r\n bytes[14] = this.data[4] >> 10;\r\n bytes[15] = this.data[4] >> 18;\r\n bytes[16] = Math.trunc(this.data[5]);\r\n bytes[17] = this.data[5] >> 8;\r\n bytes[18] = this.data[5] >> 16;\r\n bytes[19] = (this.data[5] >> 24) | (this.data[6] << 1);\r\n bytes[20] = this.data[6] >> 7;\r\n bytes[21] = this.data[6] >> 15;\r\n bytes[22] = (this.data[6] >> 23) | (this.data[7] << 3);\r\n bytes[23] = this.data[7] >> 5;\r\n bytes[24] = this.data[7] >> 13;\r\n bytes[25] = (this.data[7] >> 21) | (this.data[8] << 4);\r\n bytes[26] = this.data[8] >> 4;\r\n bytes[27] = this.data[8] >> 12;\r\n bytes[28] = (this.data[8] >> 20) | (this.data[9] << 6);\r\n bytes[29] = this.data[9] >> 2;\r\n bytes[30] = this.data[9] >> 10;\r\n bytes[31] = this.data[9] >> 18;\r\n }\r\n /**\r\n * Is the element negative.\r\n * @returns 1 if its negative.\r\n */\r\n isNegative() {\r\n const s = new Uint8Array(32);\r\n this.toBytes(s);\r\n return s[0] & 1;\r\n }\r\n /**\r\n * Is the value non zero.\r\n * @returns 1 if non zero.\r\n */\r\n isNonZero() {\r\n const s = new Uint8Array(32);\r\n this.toBytes(s);\r\n let x = 0;\r\n for (let i = 0; i < s.length; i++) {\r\n x |= s[i];\r\n }\r\n x |= x >> 4;\r\n x |= x >> 2;\r\n x |= x >> 1;\r\n return x & 1;\r\n }\r\n /**\r\n * Neg sets h = -f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n */\r\n neg() {\r\n for (let i = 0; i < FieldElement.FIELD_ELEMENT_SIZE; i++) {\r\n this.data[i] = -this.data[i];\r\n }\r\n }\r\n /**\r\n * Invert.\r\n * @param z The elemnt to invert.\r\n */\r\n invert(z) {\r\n const t0 = new FieldElement();\r\n const t1 = new FieldElement();\r\n const t2 = new FieldElement();\r\n const t3 = new FieldElement();\r\n let i;\r\n t0.square(z); // 2^1\r\n t1.square(t0); // 2^2\r\n for (i = 1; i < 2; i++) {\r\n // 2^3\r\n t1.square(t1);\r\n }\r\n t1.mul(z, t1); // 2^3 + 2^0\r\n t0.mul(t0, t1); // 2^3 + 2^1 + 2^0\r\n t2.square(t0); // 2^4 + 2^2 + 2^1\r\n t1.mul(t1, t2); // 2^4 + 2^3 + 2^2 + 2^1 + 2^0\r\n t2.square(t1); // 5,4,3,2,1\r\n for (i = 1; i < 5; i++) {\r\n // 9,8,7,6,5\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1); // 9,8,7,6,5,4,3,2,1,0\r\n t2.square(t1); // 10..1\r\n for (i = 1; i < 10; i++) {\r\n // 19..10\r\n t2.square(t2);\r\n }\r\n t2.mul(t2, t1); // 19..0\r\n t3.square(t2); // 20..1\r\n for (i = 1; i < 20; i++) {\r\n // 39..20\r\n t3.square(t3);\r\n }\r\n t2.mul(t3, t2); // 39..0\r\n t2.square(t2); // 40..1\r\n for (i = 1; i < 10; i++) {\r\n // 49..10\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1); // 49..0\r\n t2.square(t1); // 50..1\r\n for (i = 1; i < 50; i++) {\r\n // 99..50\r\n t2.square(t2);\r\n }\r\n t2.mul(t2, t1); // 99..0\r\n t3.square(t2); // 100..1\r\n for (i = 1; i < 100; i++) {\r\n // 199..100\r\n t3.square(t3);\r\n }\r\n t2.mul(t3, t2); // 199..0\r\n t2.square(t2); // 200..1\r\n for (i = 1; i < 50; i++) {\r\n // 249..50\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1); // 249..0\r\n t1.square(t1); // 250..1\r\n for (i = 1; i < 5; i++) {\r\n // 254..5\r\n t1.square(t1);\r\n }\r\n this.mul(t1, t0); // 254..5,3,1,0\r\n }\r\n /**\r\n * Perform the pow 22523 calculate.\r\n * @param z The element to operate on.\r\n */\r\n pow22523(z) {\r\n const t0 = new FieldElement();\r\n const t1 = new FieldElement();\r\n const t2 = new FieldElement();\r\n let i;\r\n t0.square(z);\r\n // for (i = 1; i < 1; i++) {\r\n // t0.square(t0);\r\n // }\r\n t1.square(t0);\r\n for (i = 1; i < 2; i++) {\r\n t1.square(t1);\r\n }\r\n t1.mul(z, t1);\r\n t0.mul(t0, t1);\r\n t0.square(t0);\r\n // for (i = 1; i < 1; i++) {\r\n // t0.square(t0);\r\n // }\r\n t0.mul(t1, t0);\r\n t1.square(t0);\r\n for (i = 1; i < 5; i++) {\r\n t1.square(t1);\r\n }\r\n t0.mul(t1, t0);\r\n t1.square(t0);\r\n for (i = 1; i < 10; i++) {\r\n t1.square(t1);\r\n }\r\n t1.mul(t1, t0);\r\n t2.square(t1);\r\n for (i = 1; i < 20; i++) {\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1);\r\n t1.square(t1);\r\n for (i = 1; i < 10; i++) {\r\n t1.square(t1);\r\n }\r\n t0.mul(t1, t0);\r\n t1.square(t0);\r\n for (i = 1; i < 50; i++) {\r\n t1.square(t1);\r\n }\r\n t1.mul(t1, t0);\r\n t2.square(t1);\r\n for (i = 1; i < 100; i++) {\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1);\r\n t1.square(t1);\r\n for (i = 1; i < 50; i++) {\r\n t1.square(t1);\r\n }\r\n t0.mul(t1, t0);\r\n t0.square(t0);\r\n for (i = 1; i < 2; i++) {\r\n t0.square(t0);\r\n }\r\n this.mul(t0, z);\r\n }\r\n /**\r\n * Replace (f,g) with (g,g) if b == 1;\r\n * replace (f,g) with (f,g) if b == 0.\r\n *\r\n * Preconditions: b in {0,1}.\r\n * @param g The g element.\r\n * @param b The b value.\r\n */\r\n cMove(g, b) {\r\n b = -b;\r\n this.data[0] ^= b & (this.data[0] ^ g.data[0]);\r\n this.data[1] ^= b & (this.data[1] ^ g.data[1]);\r\n this.data[2] ^= b & (this.data[2] ^ g.data[2]);\r\n this.data[3] ^= b & (this.data[3] ^ g.data[3]);\r\n this.data[4] ^= b & (this.data[4] ^ g.data[4]);\r\n this.data[5] ^= b & (this.data[5] ^ g.data[5]);\r\n this.data[6] ^= b & (this.data[6] ^ g.data[6]);\r\n this.data[7] ^= b & (this.data[7] ^ g.data[7]);\r\n this.data[8] ^= b & (this.data[8] ^ g.data[8]);\r\n this.data[9] ^= b & (this.data[9] ^ g.data[9]);\r\n }\r\n /**\r\n * Zero the values.\r\n */\r\n zero() {\r\n this.data.fill(0);\r\n }\r\n /**\r\n * Zero all the values and set the first byte to 1.\r\n */\r\n one() {\r\n this.data.fill(0);\r\n this.data[0] = 1;\r\n }\r\n /**\r\n * Clone the field element.\r\n * @returns The clones element.\r\n */\r\n clone() {\r\n return new FieldElement(this.data);\r\n }\r\n}\r\n/**\r\n * Field element size.\r\n */\r\nFieldElement.FIELD_ELEMENT_SIZE = 10;\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Cached group element.\r\n */\r\nexport class CachedGroupElement {\r\n /**\r\n * Create a new instance of CachedGroupElement.\r\n * @param yPlusX Y + X Element.\r\n * @param yMinusX Y - X Element.\r\n * @param Z Z Element.\r\n * @param T2d T2d Element.\r\n */\r\n constructor(yPlusX, yMinusX, Z, T2d) {\r\n this.yPlusX = yPlusX !== null && yPlusX !== void 0 ? yPlusX : new FieldElement();\r\n this.yMinusX = yMinusX !== null && yMinusX !== void 0 ? yMinusX : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n this.T2d = T2d !== null && T2d !== void 0 ? T2d : new FieldElement();\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\r\n * y^2 where d = -121665/121666.\r\n * CompletedGroupElement: ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T.\r\n */\r\nexport class CompletedGroupElement {\r\n /**\r\n * Create a new instance of CompletedGroupElement.\r\n * @param X The X element.\r\n * @param Y The Y Element.\r\n * @param Z The Z Element.\r\n * @param T The T Element.\r\n */\r\n constructor(X, Y, Z, T) {\r\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\r\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n this.T = T !== null && T !== void 0 ? T : new FieldElement();\r\n }\r\n /**\r\n * Group Element add.\r\n * @param p The extended group element.\r\n * @param q The cached group element.\r\n */\r\n add(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yPlusX);\r\n this.Y.mul(this.Y, q.yMinusX);\r\n this.T.mul(q.T2d, p.T);\r\n this.X.mul(p.Z, q.Z);\r\n t0.add(this.X, this.X);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.add(t0, this.T);\r\n this.T.sub(t0, this.T);\r\n }\r\n /**\r\n * Group Element substract.\r\n * @param p The p.\r\n * @param q The q.\r\n */\r\n sub(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yMinusX);\r\n this.Y.mul(this.Y, q.yPlusX);\r\n this.T.mul(q.T2d, p.T);\r\n this.X.mul(p.Z, q.Z);\r\n t0.add(this.X, this.X);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.sub(t0, this.T);\r\n this.T.add(t0, this.T);\r\n }\r\n /**\r\n * Mixed add.\r\n * @param p The p.\r\n * @param q The q.\r\n */\r\n mixedAdd(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yPlusX);\r\n this.Y.mul(this.Y, q.yMinusX);\r\n this.T.mul(q.xy2d, p.T);\r\n t0.add(p.Z, p.Z);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.add(t0, this.T);\r\n this.T.sub(t0, this.T);\r\n }\r\n /**\r\n * Mixed subtract.\r\n * @param p The p.\r\n * @param q The q.\r\n */\r\n mixedSub(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yMinusX);\r\n this.Y.mul(this.Y, q.yPlusX);\r\n this.T.mul(q.xy2d, p.T);\r\n t0.add(p.Z, p.Z);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.sub(t0, this.T);\r\n this.T.add(t0, this.T);\r\n }\r\n /**\r\n * Convert to projective element.\r\n * @param p The projective element to fill.\r\n */\r\n toProjective(p) {\r\n p.X.mul(this.X, this.T);\r\n p.Y.mul(this.Y, this.Z);\r\n p.Z.mul(this.Z, this.T);\r\n }\r\n /**\r\n * Convert to extended element.\r\n * @param e The extended element to fill.\r\n */\r\n toExtended(e) {\r\n e.X.mul(this.X, this.T);\r\n e.Y.mul(this.Y, this.Z);\r\n e.Z.mul(this.Z, this.T);\r\n e.T.mul(this.X, this.Y);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { CONST_BASE } from \"./const.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\r\n * y^2 where d = -121665/121666.\r\n * PreComputedGroupElement: (y+x,y-x,2dxy).\r\n */\r\nexport class PreComputedGroupElement {\r\n /**\r\n * Create a new instance of PreComputedGroupElement.\r\n * @param yPlusX Y + X Element.\r\n * @param yMinusX Y - X Element.\r\n * @param xy2d XY2d Element.\r\n */\r\n constructor(yPlusX, yMinusX, xy2d) {\r\n this.yPlusX = yPlusX !== null && yPlusX !== void 0 ? yPlusX : new FieldElement();\r\n this.yMinusX = yMinusX !== null && yMinusX !== void 0 ? yMinusX : new FieldElement();\r\n this.xy2d = xy2d !== null && xy2d !== void 0 ? xy2d : new FieldElement();\r\n }\r\n /**\r\n * Set the elements to zero.\r\n */\r\n zero() {\r\n this.yPlusX.one();\r\n this.yMinusX.one();\r\n this.xy2d.zero();\r\n }\r\n /**\r\n * CMove the pre computed element.\r\n * @param u The u.\r\n * @param b The b.\r\n */\r\n cMove(u, b) {\r\n this.yPlusX.cMove(u.yPlusX, b);\r\n this.yMinusX.cMove(u.yMinusX, b);\r\n this.xy2d.cMove(u.xy2d, b);\r\n }\r\n /**\r\n * Select point.\r\n * @param pos The position.\r\n * @param b The index.\r\n */\r\n selectPoint(pos, b) {\r\n const minusT = new PreComputedGroupElement();\r\n const bNegative = this.negative(b);\r\n const bAbs = b - ((-bNegative & b) << 1);\r\n this.zero();\r\n for (let i = 0; i < 8; i++) {\r\n this.cMove(CONST_BASE[pos][i], this.equal(bAbs, i + 1));\r\n }\r\n minusT.yPlusX = this.yMinusX.clone();\r\n minusT.yMinusX = this.yPlusX.clone();\r\n minusT.xy2d = this.xy2d.clone();\r\n minusT.xy2d.neg();\r\n this.cMove(minusT, bNegative);\r\n }\r\n /**\r\n * Negative returns 1 if b < 0 and 0 otherwise.\r\n * @param b The b.\r\n * @returns 1 if b < 0 and 0.\r\n */\r\n negative(b) {\r\n return (b >> 31) & 1;\r\n }\r\n /**\r\n * Equal returns 1 if b == c and 0 otherwise, assuming that b and c are\r\n * non-negative.\r\n * @param b The b.\r\n * @param c The c.\r\n * @returns 1 if b == c and 0.\r\n */\r\n equal(b, c) {\r\n let x = (b ^ c) & 0xffffffff;\r\n x--;\r\n return Math.abs(x >> 31);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable array-bracket-newline */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport bigInt from \"big-integer\";\r\nimport { BIG_ARR } from \"./bigIntCommon.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\nimport { PreComputedGroupElement } from \"./preComputedGroupElement.mjs\";\r\n// d is a constant in the Edwards curve equation.\r\nexport const CONST_D = new FieldElement([\r\n -10913610, 13857413, -15372611, 6949391, 114729, -8787816, -6275908, -3247719, -18696448, -12055116\r\n]);\r\n// d2 is 2*d.\r\nexport const CONST_D2 = new FieldElement([\r\n -21827239, -5839606, -30745221, 13898782, 229458, 15978800, -12551817, -6495438, 29715968, 9444199\r\n]);\r\n// SqrtM1 is the square-root of -1 in the field.\r\nexport const CONST_SQRT_M1 = new FieldElement([\r\n -32595792, -7943725, 9377950, 3500415, 12389472, -272473, -25146209, -2005654, 326686, 11406482\r\n]);\r\n// A is a constant in the Montgomery-form of curve25519.\r\nexport const CONST_A = new FieldElement([486662, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\r\n// order is the order of Curve25519 in little-endian form.\r\nexport const CONST_ORDER = [\r\n bigInt(\"5812631A5CF5D3ED\", 16),\r\n bigInt(\"14DEF9DEA2F79CD6\", 16),\r\n BIG_ARR[0],\r\n bigInt(\"1000000000000000\", 16)\r\n];\r\n// bi contains precomputed multiples of the base-point. See the Ed25519 paper\r\n// for a discussion about how these values are used.\r\nexport const CONST_BI = [\r\n new PreComputedGroupElement(new FieldElement([\r\n 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605\r\n ]), new FieldElement([\r\n -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378\r\n ]), new FieldElement([\r\n -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024\r\n ]), new FieldElement([\r\n 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574\r\n ]), new FieldElement([\r\n 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380\r\n ]), new FieldElement([\r\n 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306\r\n ]), new FieldElement([\r\n 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766\r\n ]), new FieldElement([\r\n -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701\r\n ]), new FieldElement([\r\n 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877\r\n ]), new FieldElement([\r\n -6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951\r\n ]), new FieldElement([\r\n 4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436\r\n ]), new FieldElement([\r\n 25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918\r\n ]), new FieldElement([\r\n 23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800\r\n ]), new FieldElement([\r\n -25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305\r\n ]), new FieldElement([\r\n -13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876\r\n ]), new FieldElement([\r\n -24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619\r\n ]), new FieldElement([\r\n -3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683\r\n ]))\r\n];\r\n// base contains precomputed multiples of the base-point. See the Ed25519 paper\r\n// for a discussion about how these values are used.\r\nexport const CONST_BASE = [\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605\r\n ]), new FieldElement([\r\n -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378\r\n ]), new FieldElement([\r\n -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303\r\n ]), new FieldElement([\r\n -21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081\r\n ]), new FieldElement([\r\n 26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024\r\n ]), new FieldElement([\r\n 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574\r\n ]), new FieldElement([\r\n 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540\r\n ]), new FieldElement([\r\n 23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397\r\n ]), new FieldElement([\r\n 7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380\r\n ]), new FieldElement([\r\n 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306\r\n ]), new FieldElement([\r\n 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777\r\n ]), new FieldElement([\r\n -8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737\r\n ]), new FieldElement([\r\n -18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766\r\n ]), new FieldElement([\r\n -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701\r\n ]), new FieldElement([\r\n 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726\r\n ]), new FieldElement([\r\n -7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955\r\n ]), new FieldElement([\r\n 27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171\r\n ]), new FieldElement([\r\n 27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510\r\n ]), new FieldElement([\r\n 17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639\r\n ]), new FieldElement([\r\n 29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963\r\n ]), new FieldElement([\r\n 5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568\r\n ]), new FieldElement([\r\n 12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335\r\n ]), new FieldElement([\r\n 25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007\r\n ]), new FieldElement([\r\n -2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772\r\n ]), new FieldElement([\r\n -22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567\r\n ]), new FieldElement([\r\n 13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686\r\n ]), new FieldElement([\r\n 21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887\r\n ]), new FieldElement([\r\n -23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954\r\n ]), new FieldElement([\r\n -29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833\r\n ]), new FieldElement([\r\n -16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532\r\n ]), new FieldElement([\r\n -22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268\r\n ]), new FieldElement([\r\n 33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214\r\n ]), new FieldElement([\r\n 1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800\r\n ]), new FieldElement([\r\n 4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645\r\n ]), new FieldElement([\r\n -4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933\r\n ]), new FieldElement([\r\n -25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182\r\n ]), new FieldElement([\r\n -17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991\r\n ]), new FieldElement([\r\n 20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880\r\n ]), new FieldElement([\r\n 9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295\r\n ]), new FieldElement([\r\n 19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788\r\n ]), new FieldElement([\r\n 8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026\r\n ]), new FieldElement([\r\n 11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347\r\n ]), new FieldElement([\r\n -18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395\r\n ]), new FieldElement([\r\n -27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278\r\n ]), new FieldElement([\r\n 1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995\r\n ]), new FieldElement([\r\n -30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596\r\n ]), new FieldElement([\r\n -11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060\r\n ]), new FieldElement([\r\n 11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608\r\n ]), new FieldElement([\r\n -20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389\r\n ]), new FieldElement([\r\n -19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016\r\n ]), new FieldElement([\r\n -11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505\r\n ]), new FieldElement([\r\n 14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553\r\n ]), new FieldElement([\r\n -28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220\r\n ]), new FieldElement([\r\n 12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631\r\n ]), new FieldElement([\r\n -4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556\r\n ]), new FieldElement([\r\n 14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749\r\n ]), new FieldElement([\r\n 236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391\r\n ]), new FieldElement([\r\n 5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253\r\n ]), new FieldElement([\r\n 20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958\r\n ]), new FieldElement([\r\n -11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082\r\n ]), new FieldElement([\r\n -28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521\r\n ]), new FieldElement([\r\n -11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807\r\n ]), new FieldElement([\r\n 23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134\r\n ]), new FieldElement([\r\n -32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455\r\n ]), new FieldElement([\r\n 27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069\r\n ]), new FieldElement([\r\n -32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746\r\n ]), new FieldElement([\r\n 24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837\r\n ]), new FieldElement([\r\n 8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906\r\n ]), new FieldElement([\r\n -28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817\r\n ]), new FieldElement([\r\n 10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098\r\n ]), new FieldElement([\r\n 10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504\r\n ]), new FieldElement([\r\n -26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727\r\n ]), new FieldElement([\r\n 28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003\r\n ]), new FieldElement([\r\n -1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605\r\n ]), new FieldElement([\r\n -30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701\r\n ]), new FieldElement([\r\n -23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683\r\n ]), new FieldElement([\r\n 29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563\r\n ]), new FieldElement([\r\n -19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260\r\n ]), new FieldElement([\r\n -5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870,\r\n 15664672\r\n ]), new FieldElement([\r\n 23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686\r\n ]), new FieldElement([\r\n -24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182\r\n ]), new FieldElement([\r\n -31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277\r\n ]), new FieldElement([\r\n 14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474\r\n ]), new FieldElement([\r\n -26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539\r\n ]), new FieldElement([\r\n -25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970\r\n ]), new FieldElement([\r\n 19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756\r\n ]), new FieldElement([\r\n -24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683\r\n ]), new FieldElement([\r\n -10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655\r\n ]), new FieldElement([\r\n -20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125\r\n ]), new FieldElement([\r\n -15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839\r\n ]), new FieldElement([\r\n -20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294\r\n ]), new FieldElement([\r\n -18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899\r\n ]), new FieldElement([\r\n -11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294\r\n ]), new FieldElement([\r\n -15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949\r\n ]), new FieldElement([\r\n -21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420\r\n ]), new FieldElement([\r\n -5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940\r\n ]), new FieldElement([\r\n 29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567\r\n ]), new FieldElement([\r\n 20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127\r\n ]), new FieldElement([\r\n -16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887\r\n ]), new FieldElement([\r\n 22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964\r\n ]), new FieldElement([\r\n 16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244\r\n ]), new FieldElement([\r\n 24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999\r\n ]), new FieldElement([\r\n -1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274\r\n ]), new FieldElement([\r\n -33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236\r\n ]), new FieldElement([\r\n -16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761\r\n ]), new FieldElement([\r\n -22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884\r\n ]), new FieldElement([\r\n -6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638\r\n ]), new FieldElement([\r\n -11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490\r\n ]), new FieldElement([\r\n -32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736\r\n ]), new FieldElement([\r\n 10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124\r\n ]), new FieldElement([\r\n -17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029\r\n ]), new FieldElement([\r\n 6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048\r\n ]), new FieldElement([\r\n 28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593\r\n ]), new FieldElement([\r\n 26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071\r\n ]), new FieldElement([\r\n -11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687\r\n ]), new FieldElement([\r\n -160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441\r\n ]), new FieldElement([\r\n -20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460\r\n ]), new FieldElement([\r\n -19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007\r\n ]), new FieldElement([\r\n -21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005\r\n ]), new FieldElement([\r\n -9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674\r\n ]), new FieldElement([\r\n 4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590\r\n ]), new FieldElement([\r\n -2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957\r\n ]), new FieldElement([\r\n -30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740\r\n ]), new FieldElement([\r\n -18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122\r\n ]), new FieldElement([\r\n -27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885\r\n ]), new FieldElement([\r\n 26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140\r\n ]), new FieldElement([\r\n 19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155\r\n ]), new FieldElement([\r\n 19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260\r\n ]), new FieldElement([\r\n 19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677\r\n ]), new FieldElement([\r\n 32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815\r\n ]), new FieldElement([\r\n 22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203\r\n ]), new FieldElement([\r\n -11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208\r\n ]), new FieldElement([\r\n 1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850\r\n ]), new FieldElement([\r\n -21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389\r\n ]), new FieldElement([\r\n -9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689\r\n ]), new FieldElement([\r\n 14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880\r\n ]), new FieldElement([\r\n 5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632\r\n ]), new FieldElement([\r\n -3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412\r\n ]), new FieldElement([\r\n 20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038\r\n ]), new FieldElement([\r\n -26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232\r\n ]), new FieldElement([\r\n -1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856\r\n ]), new FieldElement([\r\n 23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738\r\n ]), new FieldElement([\r\n 15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718\r\n ]), new FieldElement([\r\n -13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697\r\n ]), new FieldElement([\r\n -11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912\r\n ]), new FieldElement([\r\n -26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358\r\n ]), new FieldElement([\r\n 3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307\r\n ]), new FieldElement([\r\n -14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977\r\n ]), new FieldElement([\r\n -6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831,\r\n 15026644\r\n ]), new FieldElement([\r\n -22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616\r\n ]), new FieldElement([\r\n -27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099\r\n ]), new FieldElement([\r\n 29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341\r\n ]), new FieldElement([\r\n -936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646\r\n ]), new FieldElement([\r\n 31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425\r\n ]), new FieldElement([\r\n -17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743\r\n ]), new FieldElement([\r\n -16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822\r\n ]), new FieldElement([\r\n -8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985\r\n ]), new FieldElement([\r\n 9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702\r\n ]), new FieldElement([\r\n -22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293\r\n ]), new FieldElement([\r\n 27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100\r\n ]), new FieldElement([\r\n 19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186\r\n ]), new FieldElement([\r\n 2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610\r\n ]), new FieldElement([\r\n -2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220\r\n ]), new FieldElement([\r\n 915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025\r\n ]), new FieldElement([\r\n 32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992\r\n ]), new FieldElement([\r\n -4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027\r\n ]), new FieldElement([\r\n 21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901\r\n ]), new FieldElement([\r\n 31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952\r\n ]), new FieldElement([\r\n 19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390\r\n ]), new FieldElement([\r\n 32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730\r\n ]), new FieldElement([\r\n 2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180\r\n ]), new FieldElement([\r\n -30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272\r\n ]), new FieldElement([\r\n -15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970\r\n ]), new FieldElement([\r\n -31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772\r\n ]), new FieldElement([\r\n -17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750\r\n ]), new FieldElement([\r\n 20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373\r\n ]), new FieldElement([\r\n 32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144\r\n ]), new FieldElement([\r\n -22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195\r\n ]), new FieldElement([\r\n 5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684\r\n ]), new FieldElement([\r\n -8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518\r\n ]), new FieldElement([\r\n -2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793\r\n ]), new FieldElement([\r\n -2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794\r\n ]), new FieldElement([\r\n 580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921\r\n ]), new FieldElement([\r\n 13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518\r\n ]), new FieldElement([\r\n 2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278\r\n ]), new FieldElement([\r\n -27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024\r\n ]), new FieldElement([\r\n 4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783\r\n ]), new FieldElement([\r\n 27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717\r\n ]), new FieldElement([\r\n 6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333\r\n ]), new FieldElement([\r\n 16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048\r\n ]), new FieldElement([\r\n 22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760\r\n ]), new FieldElement([\r\n -15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757\r\n ]), new FieldElement([\r\n -2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468\r\n ]), new FieldElement([\r\n 3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184\r\n ]), new FieldElement([\r\n 10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066\r\n ]), new FieldElement([\r\n 24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882\r\n ]), new FieldElement([\r\n 13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101\r\n ]), new FieldElement([\r\n 29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279\r\n ]), new FieldElement([\r\n -6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709\r\n ]), new FieldElement([\r\n 20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714\r\n ]), new FieldElement([\r\n -2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464\r\n ]), new FieldElement([\r\n 12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847\r\n ]), new FieldElement([\r\n 13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414\r\n ]), new FieldElement([\r\n -15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158\r\n ]), new FieldElement([\r\n 17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415\r\n ]), new FieldElement([\r\n -5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459\r\n ]), new FieldElement([\r\n -31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412\r\n ]), new FieldElement([\r\n -20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743\r\n ]), new FieldElement([\r\n -14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022\r\n ]), new FieldElement([\r\n 18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429\r\n ]), new FieldElement([\r\n -6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861\r\n ]), new FieldElement([\r\n 10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000\r\n ]), new FieldElement([\r\n -33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815\r\n ]), new FieldElement([\r\n 29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642\r\n ]), new FieldElement([\r\n 10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574\r\n ]), new FieldElement([\r\n -21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742\r\n ]), new FieldElement([\r\n -18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020\r\n ]), new FieldElement([\r\n -10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772\r\n ]), new FieldElement([\r\n 3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953\r\n ]), new FieldElement([\r\n -16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218\r\n ]), new FieldElement([\r\n -17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073\r\n ]), new FieldElement([\r\n -3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325\r\n ]), new FieldElement([\r\n -11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870\r\n ]), new FieldElement([\r\n -7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863\r\n ]), new FieldElement([\r\n -13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267\r\n ]), new FieldElement([\r\n -9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663\r\n ]), new FieldElement([\r\n 22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673\r\n ]), new FieldElement([\r\n 15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943\r\n ]), new FieldElement([\r\n 15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238\r\n ]), new FieldElement([\r\n 11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064\r\n ]), new FieldElement([\r\n 14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052\r\n ]), new FieldElement([\r\n -10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904\r\n ]), new FieldElement([\r\n 29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979\r\n ]), new FieldElement([\r\n -5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841\r\n ]), new FieldElement([\r\n 10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324\r\n ]), new FieldElement([\r\n -31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940\r\n ]), new FieldElement([\r\n 10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184\r\n ]), new FieldElement([\r\n 14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114\r\n ]), new FieldElement([\r\n 30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784\r\n ]), new FieldElement([\r\n -2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091\r\n ]), new FieldElement([\r\n -16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208\r\n ]), new FieldElement([\r\n 10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864\r\n ]), new FieldElement([\r\n 17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233\r\n ]), new FieldElement([\r\n 26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212\r\n ]), new FieldElement([\r\n -12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068\r\n ]), new FieldElement([\r\n 9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397\r\n ]), new FieldElement([\r\n -8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889\r\n ]), new FieldElement([\r\n 32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038\r\n ]), new FieldElement([\r\n 14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875\r\n ]), new FieldElement([\r\n -25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905\r\n ]), new FieldElement([\r\n -25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818\r\n ]), new FieldElement([\r\n 27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714\r\n ]), new FieldElement([\r\n 10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931\r\n ]), new FieldElement([\r\n -30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024\r\n ]), new FieldElement([\r\n -23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204\r\n ]), new FieldElement([\r\n 20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817\r\n ]), new FieldElement([\r\n 27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504\r\n ]), new FieldElement([\r\n -12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768\r\n ]), new FieldElement([\r\n -19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790\r\n ]), new FieldElement([\r\n 1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438\r\n ]), new FieldElement([\r\n -22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971\r\n ]), new FieldElement([\r\n 31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905\r\n ]), new FieldElement([\r\n 29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409\r\n ]), new FieldElement([\r\n 6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499\r\n ]), new FieldElement([\r\n -8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664\r\n ]), new FieldElement([\r\n -11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324\r\n ]), new FieldElement([\r\n -21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990\r\n ]), new FieldElement([\r\n -17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914\r\n ]), new FieldElement([\r\n -25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257\r\n ]), new FieldElement([\r\n -6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433\r\n ]), new FieldElement([\r\n -16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045\r\n ]), new FieldElement([\r\n 11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093\r\n ]), new FieldElement([\r\n -1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191\r\n ]), new FieldElement([\r\n -15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507\r\n ]), new FieldElement([\r\n -12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018\r\n ]), new FieldElement([\r\n -16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109\r\n ]), new FieldElement([\r\n -23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528\r\n ]), new FieldElement([\r\n 8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625\r\n ]), new FieldElement([\r\n -32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033\r\n ]), new FieldElement([\r\n 27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866\r\n ]), new FieldElement([\r\n 21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075\r\n ]), new FieldElement([\r\n 26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347\r\n ]), new FieldElement([\r\n -22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165\r\n ]), new FieldElement([\r\n -18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588\r\n ]), new FieldElement([\r\n -32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017\r\n ]), new FieldElement([\r\n -28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883\r\n ]), new FieldElement([\r\n 21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043\r\n ]), new FieldElement([\r\n 29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663\r\n ]), new FieldElement([\r\n -20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860\r\n ]), new FieldElement([\r\n 2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466\r\n ]), new FieldElement([\r\n -24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997\r\n ]), new FieldElement([\r\n -1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295\r\n ]), new FieldElement([\r\n -13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385\r\n ]), new FieldElement([\r\n 18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109\r\n ]), new FieldElement([\r\n 2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424\r\n ]), new FieldElement([\r\n -19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185\r\n ]), new FieldElement([\r\n 7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325\r\n ]), new FieldElement([\r\n 10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593\r\n ]), new FieldElement([\r\n 696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644\r\n ]), new FieldElement([\r\n 17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801\r\n ]), new FieldElement([\r\n 26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884\r\n ]), new FieldElement([\r\n -586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577\r\n ]), new FieldElement([\r\n -9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473\r\n ]), new FieldElement([\r\n -8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644\r\n ]), new FieldElement([\r\n -2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599\r\n ]), new FieldElement([\r\n -9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768\r\n ]), new FieldElement([\r\n -27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328\r\n ]), new FieldElement([\r\n -15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369\r\n ]), new FieldElement([\r\n 20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815\r\n ]), new FieldElement([\r\n -32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025\r\n ]), new FieldElement([\r\n -21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448\r\n ]), new FieldElement([\r\n 6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981\r\n ]), new FieldElement([\r\n 30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501\r\n ]), new FieldElement([\r\n 17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073\r\n ]), new FieldElement([\r\n -1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845\r\n ]), new FieldElement([\r\n -1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211\r\n ]), new FieldElement([\r\n 18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096\r\n ]), new FieldElement([\r\n 33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803\r\n ]), new FieldElement([\r\n -32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965\r\n ]), new FieldElement([\r\n -14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505\r\n ]), new FieldElement([\r\n 18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782\r\n ]), new FieldElement([\r\n 5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900\r\n ]), new FieldElement([\r\n -31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208\r\n ]), new FieldElement([\r\n 8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232\r\n ]), new FieldElement([\r\n 17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271\r\n ]), new FieldElement([\r\n -4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326\r\n ]), new FieldElement([\r\n -8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300\r\n ]), new FieldElement([\r\n 8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570\r\n ]), new FieldElement([\r\n 15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994\r\n ]), new FieldElement([\r\n -12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913\r\n ]), new FieldElement([\r\n 31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730\r\n ]), new FieldElement([\r\n 842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096\r\n ]), new FieldElement([\r\n -4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411\r\n ]), new FieldElement([\r\n -19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905\r\n ]), new FieldElement([\r\n -9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870\r\n ]), new FieldElement([\r\n -23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498\r\n ]), new FieldElement([\r\n 12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677\r\n ]), new FieldElement([\r\n 10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647\r\n ]), new FieldElement([\r\n -2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468\r\n ]), new FieldElement([\r\n 21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375\r\n ]), new FieldElement([\r\n -25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725\r\n ]), new FieldElement([\r\n -12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612\r\n ]), new FieldElement([\r\n -10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944\r\n ]), new FieldElement([\r\n 30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928\r\n ]), new FieldElement([\r\n 9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139\r\n ]), new FieldElement([\r\n -8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963\r\n ]), new FieldElement([\r\n -31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734\r\n ]), new FieldElement([\r\n -448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680\r\n ]), new FieldElement([\r\n -24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931\r\n ]), new FieldElement([\r\n -16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654\r\n ]), new FieldElement([\r\n 22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180\r\n ]), new FieldElement([\r\n -26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684\r\n ]), new FieldElement([\r\n -10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501\r\n ]), new FieldElement([\r\n -11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413\r\n ]), new FieldElement([\r\n 6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874\r\n ]), new FieldElement([\r\n 22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962\r\n ]), new FieldElement([\r\n -7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152\r\n ]), new FieldElement([\r\n 9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063\r\n ]), new FieldElement([\r\n 7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146\r\n ]), new FieldElement([\r\n -17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183\r\n ]), new FieldElement([\r\n -19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421\r\n ]), new FieldElement([\r\n -3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622\r\n ]), new FieldElement([\r\n -4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663\r\n ]), new FieldElement([\r\n 31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753\r\n ]), new FieldElement([\r\n 4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862\r\n ]), new FieldElement([\r\n -26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118\r\n ]), new FieldElement([\r\n 26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380\r\n ]), new FieldElement([\r\n 16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824\r\n ]), new FieldElement([\r\n 28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438\r\n ]), new FieldElement([\r\n -31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584\r\n ]), new FieldElement([\r\n -594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471\r\n ]), new FieldElement([\r\n 18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610\r\n ]), new FieldElement([\r\n 19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650\r\n ]), new FieldElement([\r\n 14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369\r\n ]), new FieldElement([\r\n 19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462\r\n ]), new FieldElement([\r\n -5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793\r\n ]), new FieldElement([\r\n -2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226\r\n ]), new FieldElement([\r\n 18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019\r\n ]), new FieldElement([\r\n -15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171\r\n ]), new FieldElement([\r\n -17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132\r\n ]), new FieldElement([\r\n -28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181\r\n ]), new FieldElement([\r\n -33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210\r\n ]), new FieldElement([\r\n -1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935\r\n ]), new FieldElement([\r\n 24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105\r\n ]), new FieldElement([\r\n -28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852\r\n ]), new FieldElement([\r\n 5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581\r\n ]), new FieldElement([\r\n -4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844\r\n ]), new FieldElement([\r\n 10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025\r\n ]), new FieldElement([\r\n 27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068\r\n ]), new FieldElement([\r\n 4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192\r\n ]), new FieldElement([\r\n -17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259\r\n ]), new FieldElement([\r\n -12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426\r\n ]), new FieldElement([\r\n -5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305\r\n ]), new FieldElement([\r\n 13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204,\r\n -9421832\r\n ]), new FieldElement([\r\n 28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011\r\n ]), new FieldElement([\r\n 24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447\r\n ]), new FieldElement([\r\n 17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245\r\n ]), new FieldElement([\r\n -20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859\r\n ]), new FieldElement([\r\n 28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707\r\n ]), new FieldElement([\r\n 10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848\r\n ]), new FieldElement([\r\n -11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391\r\n ]), new FieldElement([\r\n 15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215\r\n ]), new FieldElement([\r\n -23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713\r\n ]), new FieldElement([\r\n 21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849\r\n ]), new FieldElement([\r\n -7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940\r\n ]), new FieldElement([\r\n -21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031\r\n ]), new FieldElement([\r\n -17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243\r\n ]), new FieldElement([\r\n -23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116\r\n ]), new FieldElement([\r\n -24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509\r\n ]), new FieldElement([\r\n -10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883\r\n ]), new FieldElement([\r\n 15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660\r\n ]), new FieldElement([\r\n 4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273\r\n ]), new FieldElement([\r\n -28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560\r\n ]), new FieldElement([\r\n -10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135\r\n ]), new FieldElement([\r\n 2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739\r\n ]), new FieldElement([\r\n 18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756\r\n ]), new FieldElement([\r\n -30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347\r\n ]), new FieldElement([\r\n -27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028\r\n ]), new FieldElement([\r\n 21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799\r\n ]), new FieldElement([\r\n -2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609\r\n ]), new FieldElement([\r\n -25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989\r\n ]), new FieldElement([\r\n -30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523\r\n ]), new FieldElement([\r\n 4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045\r\n ]), new FieldElement([\r\n 19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377\r\n ]), new FieldElement([\r\n 24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016\r\n ]), new FieldElement([\r\n 510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426\r\n ]), new FieldElement([\r\n 18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396\r\n ]), new FieldElement([\r\n 9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080\r\n ]), new FieldElement([\r\n 12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275\r\n ]), new FieldElement([\r\n 11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074\r\n ]), new FieldElement([\r\n 20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717\r\n ]), new FieldElement([\r\n -1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101\r\n ]), new FieldElement([\r\n 24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632\r\n ]), new FieldElement([\r\n -26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415\r\n ]), new FieldElement([\r\n -31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876\r\n ]), new FieldElement([\r\n 22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625\r\n ]), new FieldElement([\r\n -15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164\r\n ]), new FieldElement([\r\n 26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595\r\n ]), new FieldElement([\r\n -7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858\r\n ]), new FieldElement([\r\n 15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193\r\n ]), new FieldElement([\r\n 8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942\r\n ]), new FieldElement([\r\n -1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635\r\n ]), new FieldElement([\r\n 21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935\r\n ]), new FieldElement([\r\n -25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415\r\n ]), new FieldElement([\r\n -15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018\r\n ]), new FieldElement([\r\n 4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778\r\n ]), new FieldElement([\r\n 366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385\r\n ]), new FieldElement([\r\n 18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503\r\n ]), new FieldElement([\r\n 476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056\r\n ]), new FieldElement([\r\n -13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838\r\n ]), new FieldElement([\r\n 24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691\r\n ]), new FieldElement([\r\n -15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118\r\n ]), new FieldElement([\r\n -23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269\r\n ]), new FieldElement([\r\n -6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904\r\n ]), new FieldElement([\r\n -23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193\r\n ]), new FieldElement([\r\n -7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910\r\n ]), new FieldElement([\r\n -30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667\r\n ]), new FieldElement([\r\n 25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481\r\n ]), new FieldElement([\r\n -9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640\r\n ]), new FieldElement([\r\n -8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278\r\n ]), new FieldElement([\r\n -21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272\r\n ]), new FieldElement([\r\n 17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012\r\n ]), new FieldElement([\r\n -10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046\r\n ]), new FieldElement([\r\n 13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345\r\n ]), new FieldElement([\r\n -19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937\r\n ]), new FieldElement([\r\n 31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636\r\n ]), new FieldElement([\r\n -9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429\r\n ]), new FieldElement([\r\n -15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576\r\n ]), new FieldElement([\r\n 31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490\r\n ]), new FieldElement([\r\n -12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104\r\n ]), new FieldElement([\r\n 33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275\r\n ]), new FieldElement([\r\n -20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511\r\n ]), new FieldElement([\r\n 22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439\r\n ]), new FieldElement([\r\n 23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939\r\n ]), new FieldElement([\r\n -23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310\r\n ]), new FieldElement([\r\n 3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608\r\n ]), new FieldElement([\r\n -32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101\r\n ]), new FieldElement([\r\n 21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418\r\n ]), new FieldElement([\r\n 18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356\r\n ]), new FieldElement([\r\n 9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996\r\n ]), new FieldElement([\r\n -26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728\r\n ]), new FieldElement([\r\n -13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658\r\n ]), new FieldElement([\r\n -10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001\r\n ]), new FieldElement([\r\n -4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766\r\n ]), new FieldElement([\r\n 18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458\r\n ]), new FieldElement([\r\n -17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628\r\n ]), new FieldElement([\r\n -13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062\r\n ]), new FieldElement([\r\n 25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616\r\n ]), new FieldElement([\r\n 31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383\r\n ]), new FieldElement([\r\n -25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814\r\n ]), new FieldElement([\r\n -20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417\r\n ]), new FieldElement([\r\n 2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222\r\n ]), new FieldElement([\r\n 33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597\r\n ]), new FieldElement([\r\n 23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970\r\n ]), new FieldElement([\r\n 1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647\r\n ]), new FieldElement([\r\n 13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511\r\n ]), new FieldElement([\r\n -29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834\r\n ]), new FieldElement([\r\n -23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461\r\n ]), new FieldElement([\r\n 29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516\r\n ]), new FieldElement([\r\n -20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547\r\n ]), new FieldElement([\r\n -24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038\r\n ]), new FieldElement([\r\n -33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741\r\n ]), new FieldElement([\r\n 16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747\r\n ]), new FieldElement([\r\n -1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323\r\n ]), new FieldElement([\r\n 31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373\r\n ]), new FieldElement([\r\n 15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228\r\n ]), new FieldElement([\r\n -2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399\r\n ]), new FieldElement([\r\n 11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831\r\n ]), new FieldElement([\r\n -185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313\r\n ]), new FieldElement([\r\n -18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958\r\n ]), new FieldElement([\r\n -6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743\r\n ]), new FieldElement([\r\n 29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684\r\n ]), new FieldElement([\r\n -20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476\r\n ]))\r\n ]\r\n];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { CachedGroupElement } from \"./cachedGroupElement.mjs\";\r\nimport { CompletedGroupElement } from \"./completedGroupElement.mjs\";\r\nimport { CONST_BI } from \"./const.mjs\";\r\nimport { ExtendedGroupElement } from \"./extendedGroupElement.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\r\n * y^2 where d = -121665/121666\r\n * ProjectiveGroupElement: (X:Y:Z) satisfying x=X/Z, y=Y/Z.\r\n */\r\nexport class ProjectiveGroupElement {\r\n /**\r\n * Create a new instance of CompletedGroupElement.\r\n * @param X The X element.\r\n * @param Y The Y Element.\r\n * @param Z The Z Element.\r\n */\r\n constructor(X, Y, Z) {\r\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\r\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n }\r\n /**\r\n * Zero the elements.\r\n */\r\n zero() {\r\n this.X.zero();\r\n this.Y.one();\r\n this.Z.one();\r\n }\r\n /**\r\n * Double the elements.\r\n * @param r The elements.\r\n */\r\n double(r) {\r\n const t0 = new FieldElement();\r\n r.X.square(this.X);\r\n r.Z.square(this.Y);\r\n r.T.square2(this.Z);\r\n r.Y.add(this.X, this.Y);\r\n t0.square(r.Y);\r\n r.Y.add(r.Z, r.X);\r\n r.Z.sub(r.Z, r.X);\r\n r.X.sub(t0, r.Y);\r\n r.T.sub(r.T, r.Z);\r\n }\r\n /**\r\n * Convert to extended form.\r\n * @param r The extended element.\r\n */\r\n toExtended(r) {\r\n r.X.mul(this.X, this.Z);\r\n r.Y.mul(this.Y, this.Z);\r\n r.Z.square(this.Z);\r\n r.T.mul(this.X, this.Y);\r\n }\r\n /**\r\n * Convert the element to bytes.\r\n * @param s The bytes.\r\n */\r\n toBytes(s) {\r\n const recip = new FieldElement();\r\n const x = new FieldElement();\r\n const y = new FieldElement();\r\n recip.invert(this.Z);\r\n x.mul(this.X, recip);\r\n y.mul(this.Y, recip);\r\n y.toBytes(s);\r\n s[31] ^= x.isNegative() << 7;\r\n }\r\n /**\r\n * GeDoubleScalarMultVartime sets r = a*A + b*B\r\n * where a = a[0]+256*a[1]+...+256^31 a[31]\r\n * and b = b[0]+256*b[1]+...+256^31 b[31]\r\n * B is the Ed25519 base point (x,4/5) with x positive.\r\n * @param a The a.\r\n * @param A The A.\r\n * @param b The b.\r\n */\r\n doubleScalarMultVartime(a, A, b) {\r\n const aSlide = new Int8Array(256);\r\n const bSlide = new Int8Array(256);\r\n const ai = [\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement()\r\n ]; // A,3A,5A,7A,9A,11A,13A,15A\r\n const t = new CompletedGroupElement();\r\n const u = new ExtendedGroupElement();\r\n const A2 = new ExtendedGroupElement();\r\n let i;\r\n this.slide(aSlide, a);\r\n this.slide(bSlide, b);\r\n A.toCached(ai[0]);\r\n A.double(t);\r\n t.toExtended(A2);\r\n for (i = 0; i < 7; i++) {\r\n t.add(A2, ai[i]);\r\n t.toExtended(u);\r\n u.toCached(ai[i + 1]);\r\n }\r\n this.zero();\r\n for (i = 255; i >= 0; i--) {\r\n if (aSlide[i] !== 0 || bSlide[i] !== 0) {\r\n break;\r\n }\r\n }\r\n for (; i >= 0; i--) {\r\n this.double(t);\r\n if (aSlide[i] > 0) {\r\n t.toExtended(u);\r\n t.add(u, ai[Math.floor(aSlide[i] / 2)]);\r\n }\r\n else if (aSlide[i] < 0) {\r\n t.toExtended(u);\r\n t.sub(u, ai[Math.floor(-aSlide[i] / 2)]);\r\n }\r\n if (bSlide[i] > 0) {\r\n t.toExtended(u);\r\n t.mixedAdd(u, CONST_BI[Math.floor(bSlide[i] / 2)]);\r\n }\r\n else if (bSlide[i] < 0) {\r\n t.toExtended(u);\r\n t.mixedSub(u, CONST_BI[Math.floor(-bSlide[i] / 2)]);\r\n }\r\n t.toProjective(this);\r\n }\r\n }\r\n /**\r\n * Perform the slide.\r\n * @param r The r.\r\n * @param a The a.\r\n */\r\n slide(r, a) {\r\n let i;\r\n for (i = 0; i < r.length; i++) {\r\n r[i] = 1 & (a[i >> 3] >> (i & 7));\r\n }\r\n for (i = 0; i < r.length; i++) {\r\n if (r[i] !== 0) {\r\n for (let b = 1; b <= 6 && i + b < 256; b++) {\r\n if (r[i + b] !== 0) {\r\n if (r[i] + (r[i + b] << b) <= 15) {\r\n r[i] += r[i + b] << b;\r\n r[i + b] = 0;\r\n }\r\n else if (r[i] - (r[i + b] << b) >= -15) {\r\n r[i] -= r[i + b] << b;\r\n for (let k = i + b; k < 256; k++) {\r\n if (r[k] === 0) {\r\n r[k] = 1;\r\n break;\r\n }\r\n r[k] = 0;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { ArrayHelper } from \"../../utils/arrayHelper.mjs\";\r\nimport { CachedGroupElement } from \"./cachedGroupElement.mjs\";\r\nimport { CompletedGroupElement } from \"./completedGroupElement.mjs\";\r\nimport { CONST_D, CONST_D2, CONST_SQRT_M1 } from \"./const.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\nimport { PreComputedGroupElement } from \"./preComputedGroupElement.mjs\";\r\nimport { ProjectiveGroupElement } from \"./projectiveGroupElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 * y^2 where d = -121665/121666.\r\n * ExtendedGroupElement: (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT.\r\n */\r\nexport class ExtendedGroupElement {\r\n /**\r\n * Create a new instance of ExtendedGroupElement.\r\n * @param X The X element.\r\n * @param Y The Y Element.\r\n * @param Z The Z Element.\r\n * @param T The T Element.\r\n */\r\n constructor(X, Y, Z, T) {\r\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\r\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n this.T = T !== null && T !== void 0 ? T : new FieldElement();\r\n }\r\n /**\r\n * Zero the elements.\r\n */\r\n zero() {\r\n this.X.zero();\r\n this.Y.one();\r\n this.Z.one();\r\n this.T.zero();\r\n }\r\n /**\r\n * Double the element.\r\n * @param cachedGroupElement The element to populate.\r\n */\r\n double(cachedGroupElement) {\r\n const q = new ProjectiveGroupElement();\r\n this.toProjective(q);\r\n q.double(cachedGroupElement);\r\n }\r\n /**\r\n * Convert to a cached group element.\r\n * @param cacheGroupElement The element to populate.\r\n */\r\n toCached(cacheGroupElement) {\r\n cacheGroupElement.yPlusX.add(this.Y, this.X);\r\n cacheGroupElement.yMinusX.sub(this.Y, this.X);\r\n cacheGroupElement.Z = this.Z.clone();\r\n cacheGroupElement.T2d.mul(this.T, CONST_D2);\r\n }\r\n /**\r\n * Convert to a projective group element.\r\n * @param projectiveGroupElement The element to populate.\r\n */\r\n toProjective(projectiveGroupElement) {\r\n projectiveGroupElement.X = this.X.clone();\r\n projectiveGroupElement.Y = this.Y.clone();\r\n projectiveGroupElement.Z = this.Z.clone();\r\n }\r\n /**\r\n * Convert the element to bytes.\r\n * @param bytes The array to store the bytes in.\r\n */\r\n toBytes(bytes) {\r\n const recip = new FieldElement();\r\n const x = new FieldElement();\r\n const y = new FieldElement();\r\n recip.invert(this.Z);\r\n x.mul(this.X, recip);\r\n y.mul(this.Y, recip);\r\n y.toBytes(bytes);\r\n bytes[31] ^= x.isNegative() << 7;\r\n }\r\n /**\r\n * Populate the element from bytes.\r\n * @param bytes The butes to populate from.\r\n * @returns False is non-zero check.\r\n */\r\n fromBytes(bytes) {\r\n const u = new FieldElement();\r\n const v = new FieldElement();\r\n const v3 = new FieldElement();\r\n const vxx = new FieldElement();\r\n const check = new FieldElement();\r\n let i;\r\n this.Y.fromBytes(bytes);\r\n this.Z.one();\r\n u.square(this.Y);\r\n v.mul(u, CONST_D);\r\n u.sub(u, this.Z); // y = y^2-1\r\n v.add(v, this.Z); // v = dy^2+1\r\n v3.square(v);\r\n v3.mul(v3, v); // v3 = v^3\r\n this.X.square(v3);\r\n this.X.mul(this.X, v);\r\n this.X.mul(this.X, u); // x = uv^7\r\n this.X.pow22523(this.X); // x = (uv^7)^((q-5)/8)\r\n this.X.mul(this.X, v3);\r\n this.X.mul(this.X, u); // x = uv^3(uv^7)^((q-5)/8)\r\n const tmpX = new Uint8Array(32);\r\n const tmp2 = new Uint8Array(32);\r\n vxx.square(this.X);\r\n vxx.mul(vxx, v);\r\n check.sub(vxx, u); // vx^2-u\r\n if (check.isNonZero() === 1) {\r\n check.add(vxx, u); // vx^2+u\r\n if (check.isNonZero() === 1) {\r\n return false;\r\n }\r\n this.X.mul(this.X, CONST_SQRT_M1);\r\n this.X.toBytes(tmpX);\r\n for (i = 0; i < tmpX.length; i++) {\r\n tmp2[31 - i] = tmpX[i];\r\n }\r\n }\r\n if (this.X.isNegative() !== bytes[31] >> 7) {\r\n this.X.neg();\r\n }\r\n this.T.mul(this.X, this.Y);\r\n return true;\r\n }\r\n /**\r\n * GeScalarMultBase computes h = a*B, where\r\n * a = a[0]+256*a[1]+...+256^31 a[31]\r\n * b is the Ed25519 base point (x,4/5) with x positive.\r\n *\r\n * Preconditions:\r\n * A[31] <= 127.\r\n * @param a The a.\r\n */\r\n scalarMultBase(a) {\r\n const e = new Int8Array(64);\r\n for (let i = 0; i < a.length; i++) {\r\n e[2 * i] = a[i] & 15;\r\n e[2 * i + 1] = (a[i] >> 4) & 15;\r\n }\r\n // each e[i] is between 0 and 15 and e[63] is between 0 and 7.\r\n let carry = 0;\r\n for (let i = 0; i < 63; i++) {\r\n e[i] += carry;\r\n carry = (e[i] + 8) >> 4;\r\n e[i] -= carry << 4;\r\n }\r\n e[63] += carry;\r\n // each e[i] is between -8 and 8.\r\n this.zero();\r\n const t = new PreComputedGroupElement();\r\n const r = new CompletedGroupElement();\r\n for (let i = 1; i < 64; i += 2) {\r\n t.selectPoint(Math.floor(i / 2), e[i]);\r\n r.mixedAdd(this, t);\r\n r.toExtended(this);\r\n }\r\n const s = new ProjectiveGroupElement();\r\n this.double(r);\r\n r.toProjective(s);\r\n s.double(r);\r\n r.toProjective(s);\r\n s.double(r);\r\n r.toProjective(s);\r\n s.double(r);\r\n r.toExtended(this);\r\n for (let i = 0; i < 64; i += 2) {\r\n t.selectPoint(i / 2, e[i]);\r\n r.mixedAdd(this, t);\r\n r.toExtended(this);\r\n }\r\n }\r\n /**\r\n * CofactorEqual checks whether p, q are equal up to cofactor multiplication\r\n * ie if their difference is of small order.\r\n * @param q The extended group element.\r\n * @returns True if they are equal.\r\n */\r\n cofactorEqual(q) {\r\n const t1 = new CachedGroupElement();\r\n const t2 = new CompletedGroupElement();\r\n const t3 = new ProjectiveGroupElement();\r\n q.toCached(t1);\r\n t2.sub(this, t1); // t2 = (P - Q)\r\n t2.toProjective(t3); // t3 = (P - Q)\r\n t3.double(t2); // t2 = [2](P - Q)\r\n t2.toProjective(t3); // t3 = [2](P - Q)\r\n t3.double(t2); // t2 = [4](P - Q)\r\n t2.toProjective(t3); // t3 = [4](P - Q)\r\n t3.double(t2); // t2 = [8](P - Q)\r\n t2.toProjective(t3); // t3 = [8](P - Q)\r\n // Now we want to check whether the point t3 is the identity.\r\n // In projective coordinates this is (X:Y:Z) ~ (0:1:0)\r\n // ie. X/Z = 0, Y/Z = 1\r\n // <=> X = 0, Y = Z\r\n const zero = new Uint8Array(32);\r\n const xBytes = new Uint8Array(32);\r\n const yBytes = new Uint8Array(32);\r\n const zBytes = new Uint8Array(32);\r\n t3.X.toBytes(xBytes);\r\n t3.Y.toBytes(yBytes);\r\n t3.Z.toBytes(zBytes);\r\n return ArrayHelper.equal(zero, xBytes) && ArrayHelper.equal(yBytes, zBytes);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable newline-per-chained-call */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { BigIntHelper } from \"@iota/util.js\";\r\nimport bigInt from \"big-integer\";\r\nimport { BIG_136657, BIG_1_SHIFTL_20, BIG_2097151, BIG_470296, BIG_654183, BIG_666643, BIG_683901, BIG_997805, BIG_ARR } from \"./bigIntCommon.mjs\";\r\nimport { CONST_ORDER } from \"./const.mjs\";\r\n/**\r\n * The scalars are GF(2^252 + 27742317777372353535851937790883648493).\r\n *\r\n * Input\r\n * a[0]+256*a[1]+...+256^31*a[31] = a\r\n * b[0]+256*b[1]+...+256^31*b[31] = b\r\n * c[0]+256*c[1]+...+256^31*c[31] = c.\r\n *\r\n * Output\r\n * s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l\r\n * where l = 2^252 + 27742317777372353535851937790883648493.\r\n * @param s The scalar.\r\n * @param a The a.\r\n * @param b The b.\r\n * @param c The c.\r\n */\r\nexport function scalarMulAdd(s, a, b, c) {\r\n const a0 = BIG_2097151.and(BigIntHelper.read3(a, 0));\r\n const a1 = BIG_2097151.and(BigIntHelper.read4(a, 2).shiftRight(BIG_ARR[5]));\r\n const a2 = BIG_2097151.and(BigIntHelper.read3(a, 5).shiftRight(BIG_ARR[2]));\r\n const a3 = BIG_2097151.and(BigIntHelper.read4(a, 7).shiftRight(BIG_ARR[7]));\r\n const a4 = BIG_2097151.and(BigIntHelper.read4(a, 10).shiftRight(BIG_ARR[4]));\r\n const a5 = BIG_2097151.and(BigIntHelper.read3(a, 13).shiftRight(BIG_ARR[1]));\r\n const a6 = BIG_2097151.and(BigIntHelper.read4(a, 15).shiftRight(BIG_ARR[6]));\r\n const a7 = BIG_2097151.and(BigIntHelper.read3(a, 18).shiftRight(BIG_ARR[3]));\r\n const a8 = BIG_2097151.and(BigIntHelper.read3(a, 21));\r\n const a9 = BIG_2097151.and(BigIntHelper.read4(a, 23).shiftRight(BIG_ARR[5]));\r\n const a10 = BIG_2097151.and(BigIntHelper.read3(a, 26).shiftRight(BIG_ARR[2]));\r\n const a11 = BigIntHelper.read4(a, 28).shiftRight(BIG_ARR[7]);\r\n const b0 = BIG_2097151.and(BigIntHelper.read3(b, 0));\r\n const b1 = BIG_2097151.and(BigIntHelper.read4(b, 2).shiftRight(BIG_ARR[5]));\r\n const b2 = BIG_2097151.and(BigIntHelper.read3(b, 5).shiftRight(BIG_ARR[2]));\r\n const b3 = BIG_2097151.and(BigIntHelper.read4(b, 7).shiftRight(BIG_ARR[7]));\r\n const b4 = BIG_2097151.and(BigIntHelper.read4(b, 10).shiftRight(BIG_ARR[4]));\r\n const b5 = BIG_2097151.and(BigIntHelper.read3(b, 13).shiftRight(BIG_ARR[1]));\r\n const b6 = BIG_2097151.and(BigIntHelper.read4(b, 15).shiftRight(BIG_ARR[6]));\r\n const b7 = BIG_2097151.and(BigIntHelper.read3(b, 18).shiftRight(BIG_ARR[3]));\r\n const b8 = BIG_2097151.and(BigIntHelper.read3(b, 21));\r\n const b9 = BIG_2097151.and(BigIntHelper.read4(b, 23).shiftRight(BIG_ARR[5]));\r\n const b10 = BIG_2097151.and(BigIntHelper.read3(b, 26).shiftRight(BIG_ARR[2]));\r\n const b11 = BigIntHelper.read4(b, 28).shiftRight(BIG_ARR[7]);\r\n const c0 = BIG_2097151.and(BigIntHelper.read3(c, 0));\r\n const c1 = BIG_2097151.and(BigIntHelper.read4(c, 2).shiftRight(BIG_ARR[5]));\r\n const c2 = BIG_2097151.and(BigIntHelper.read3(c, 5).shiftRight(BIG_ARR[2]));\r\n const c3 = BIG_2097151.and(BigIntHelper.read4(c, 7).shiftRight(BIG_ARR[7]));\r\n const c4 = BIG_2097151.and(BigIntHelper.read4(c, 10).shiftRight(BIG_ARR[4]));\r\n const c5 = BIG_2097151.and(BigIntHelper.read3(c, 13).shiftRight(BIG_ARR[1]));\r\n const c6 = BIG_2097151.and(BigIntHelper.read4(c, 15).shiftRight(BIG_ARR[6]));\r\n const c7 = BIG_2097151.and(BigIntHelper.read3(c, 18).shiftRight(BIG_ARR[3]));\r\n const c8 = BIG_2097151.and(BigIntHelper.read3(c, 21));\r\n const c9 = BIG_2097151.and(BigIntHelper.read4(c, 23).shiftRight(BIG_ARR[5]));\r\n const c10 = BIG_2097151.and(BigIntHelper.read3(c, 26).shiftRight(BIG_ARR[2]));\r\n const c11 = BigIntHelper.read4(c, 28).shiftRight(BIG_ARR[7]);\r\n const carry = [];\r\n for (let i = 0; i < 32; i++) {\r\n carry[i] = bigInt(0);\r\n }\r\n let s0 = c0.add(a0.times(b0));\r\n let s1 = c1.add(a0.times(b1).add(a1.times(b0)));\r\n let s2 = c2.add(a0.times(b2).add(a1.times(b1)).add(a2.times(b0)));\r\n let s3 = c3.add(a0.times(b3).add(a1.times(b2)).add(a2.times(b1)).add(a3.times(b0)));\r\n let s4 = c4.add(a0.times(b4).add(a1.times(b3)).add(a2.times(b2)).add(a3.times(b1)).add(a4.times(b0)));\r\n let s5 = c5.add(a0.times(b5).add(a1.times(b4)).add(a2.times(b3)).add(a3.times(b2)).add(a4.times(b1)).add(a5.times(b0)));\r\n let s6 = c6.add(a0\r\n .times(b6)\r\n .add(a1.times(b5))\r\n .add(a2.times(b4))\r\n .add(a3.times(b3))\r\n .add(a4.times(b2))\r\n .add(a5.times(b1))\r\n .add(a6.times(b0)));\r\n let s7 = c7\r\n .add(a0\r\n .times(b7)\r\n .add(a1.times(b6))\r\n .add(a2.times(b5))\r\n .add(a3.times(b4))\r\n .add(a4.times(b3))\r\n .add(a5.times(b2))\r\n .add(a6.times(b1)))\r\n .add(a7.times(b0));\r\n let s8 = c8.add(a0\r\n .times(b8)\r\n .add(a1.times(b7))\r\n .add(a2.times(b6))\r\n .add(a3.times(b5))\r\n .add(a4.times(b4))\r\n .add(a5.times(b3))\r\n .add(a6.times(b2))\r\n .add(a7.times(b1))\r\n .add(a8.times(b0)));\r\n let s9 = c9\r\n .add(a0.times(b9))\r\n .add(a1.times(b8))\r\n .add(a2.times(b7))\r\n .add(a3.times(b6))\r\n .add(a4.times(b5))\r\n .add(a5.times(b4))\r\n .add(a6.times(b3))\r\n .add(a7.times(b2))\r\n .add(a8.times(b1))\r\n .add(a9.times(b0));\r\n let s10 = c10\r\n .add(a0.times(b10))\r\n .add(a1.times(b9))\r\n .add(a2.times(b8))\r\n .add(a3.times(b7))\r\n .add(a4.times(b6))\r\n .add(a5.times(b5))\r\n .add(a6.times(b4))\r\n .add(a7.times(b3))\r\n .add(a8.times(b2))\r\n .add(a9.times(b1))\r\n .add(a10.times(b0));\r\n let s11 = c11\r\n .add(a0.times(b11))\r\n .add(a1.times(b10))\r\n .add(a2.times(b9))\r\n .add(a3.times(b8))\r\n .add(a4.times(b7))\r\n .add(a5.times(b6))\r\n .add(a6.times(b5))\r\n .add(a7.times(b4))\r\n .add(a8.times(b3))\r\n .add(a9.times(b2))\r\n .add(a10.times(b1))\r\n .add(a11.times(b0));\r\n let s12 = a1\r\n .times(b11)\r\n .add(a2.times(b10))\r\n .add(a3.times(b9))\r\n .add(a4.times(b8))\r\n .add(a5.times(b7))\r\n .add(a6.times(b6))\r\n .add(a7.times(b5))\r\n .add(a8.times(b4))\r\n .add(a9.times(b3))\r\n .add(a10.times(b2))\r\n .add(a11.times(b1));\r\n let s13 = a2\r\n .times(b11)\r\n .add(a3.times(b10))\r\n .add(a4.times(b9))\r\n .add(a5.times(b8))\r\n .add(a6.times(b7))\r\n .add(a7.times(b6))\r\n .add(a8.times(b5))\r\n .add(a9.times(b4))\r\n .add(a10.times(b3))\r\n .add(a11.times(b2));\r\n let s14 = a3\r\n .times(b11)\r\n .add(a4.times(b10))\r\n .add(a5.times(b9))\r\n .add(a6.times(b8))\r\n .add(a7.times(b7))\r\n .add(a8.times(b6))\r\n .add(a9.times(b5))\r\n .add(a10.times(b4))\r\n .add(a11.times(b3));\r\n let s15 = a4\r\n .times(b11)\r\n .add(a5.times(b10))\r\n .add(a6.times(b9))\r\n .add(a7.times(b8))\r\n .add(a8.times(b7))\r\n .add(a9.times(b6))\r\n .add(a10.times(b5))\r\n .add(a11.times(b4));\r\n let s16 = a5\r\n .times(b11)\r\n .add(a6.times(b10))\r\n .add(a7.times(b9))\r\n .add(a8.times(b8))\r\n .add(a9.times(b7))\r\n .add(a10.times(b6))\r\n .add(a11.times(b5));\r\n let s17 = a6\r\n .times(b11)\r\n .add(a7.times(b10))\r\n .add(a8.times(b9))\r\n .add(a9.times(b8))\r\n .add(a10.times(b7))\r\n .add(a11.times(b6));\r\n let s18 = a7.times(b11).add(a8.times(b10)).add(a9.times(b9)).add(a10.times(b8)).add(a11.times(b7));\r\n let s19 = a8.times(b11).add(a9.times(b10)).add(a10.times(b9)).add(a11.times(b8));\r\n let s20 = a9.times(b11).add(a10.times(b10)).add(a11.times(b9));\r\n let s21 = a10.times(b11).add(a11.times(b10));\r\n let s22 = a11.times(b11);\r\n let s23 = BIG_ARR[0];\r\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s13 = s13.add(carry[12]);\r\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\r\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s15 = s15.add(carry[14]);\r\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\r\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s17 = s17.add(carry[16]);\r\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\r\n carry[18] = s18.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s19 = s19.add(carry[18]);\r\n s18 = s18.minus(carry[18].shiftLeft(BIG_ARR[21]));\r\n carry[20] = s20.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s21 = s21.add(carry[20]);\r\n s20 = s20.minus(carry[20].shiftLeft(BIG_ARR[21]));\r\n carry[22] = s22.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s23 = s23.add(carry[22]);\r\n s22 = s22.minus(carry[22].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s14 = s14.add(carry[13]);\r\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\r\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s16 = s16.add(carry[15]);\r\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\r\n carry[17] = s17.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s18 = s18.add(carry[17]);\r\n s17 = s17.minus(carry[17].shiftLeft(BIG_ARR[21]));\r\n carry[19] = s19.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s20 = s20.add(carry[19]);\r\n s19 = s19.minus(carry[19].shiftLeft(BIG_ARR[21]));\r\n carry[21] = s21.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s22 = s22.add(carry[21]);\r\n s21 = s21.minus(carry[21].shiftLeft(BIG_ARR[21]));\r\n s11 = s11.add(s23.times(BIG_666643));\r\n s12 = s12.add(s23.times(BIG_470296));\r\n s13 = s13.add(s23.times(BIG_654183));\r\n s14 = s14.minus(s23.times(BIG_997805));\r\n s15 = s15.add(s23.times(BIG_136657));\r\n s16 = s16.minus(s23.times(BIG_683901));\r\n s23 = BIG_ARR[0];\r\n s10 = s10.add(s22.times(BIG_666643));\r\n s11 = s11.add(s22.times(BIG_470296));\r\n s12 = s12.add(s22.times(BIG_654183));\r\n s13 = s13.minus(s22.times(BIG_997805));\r\n s14 = s14.add(s22.times(BIG_136657));\r\n s15 = s15.minus(s22.times(BIG_683901));\r\n s22 = BIG_ARR[0];\r\n s9 = s9.add(s21.times(BIG_666643));\r\n s10 = s10.add(s21.times(BIG_470296));\r\n s11 = s11.add(s21.times(BIG_654183));\r\n s12 = s12.minus(s21.times(BIG_997805));\r\n s13 = s13.add(s21.times(BIG_136657));\r\n s14 = s14.minus(s21.times(BIG_683901));\r\n s21 = BIG_ARR[0];\r\n s8 = s8.add(s20.times(BIG_666643));\r\n s9 = s9.add(s20.times(BIG_470296));\r\n s10 = s10.add(s20.times(BIG_654183));\r\n s11 = s11.minus(s20.times(BIG_997805));\r\n s12 = s12.add(s20.times(BIG_136657));\r\n s13 = s13.minus(s20.times(BIG_683901));\r\n s20 = BIG_ARR[0];\r\n s7 = s7.add(s19.times(BIG_666643));\r\n s8 = s8.add(s19.times(BIG_470296));\r\n s9 = s9.add(s19.times(BIG_654183));\r\n s10 = s10.minus(s19.times(BIG_997805));\r\n s11 = s11.add(s19.times(BIG_136657));\r\n s12 = s12.minus(s19.times(BIG_683901));\r\n s19 = BIG_ARR[0];\r\n s6 = s6.add(s18.times(BIG_666643));\r\n s7 = s7.add(s18.times(BIG_470296));\r\n s8 = s8.add(s18.times(BIG_654183));\r\n s9 = s9.minus(s18.times(BIG_997805));\r\n s10 = s10.add(s18.times(BIG_136657));\r\n s11 = s11.minus(s18.times(BIG_683901));\r\n s18 = BIG_ARR[0];\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s13 = s13.add(carry[12]);\r\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\r\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s15 = s15.add(carry[14]);\r\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\r\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s17 = s17.add(carry[16]);\r\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s14 = s14.add(carry[13]);\r\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\r\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s16 = s16.add(carry[15]);\r\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\r\n s5 = s5.add(s17.times(BIG_666643));\r\n s6 = s6.add(s17.times(BIG_470296));\r\n s7 = s7.add(s17.times(BIG_654183));\r\n s8 = s8.minus(s17.times(BIG_997805));\r\n s9 = s9.add(s17.times(BIG_136657));\r\n s10 = s10.minus(s17.times(BIG_683901));\r\n s17 = BIG_ARR[0];\r\n s4 = s4.add(s16.times(BIG_666643));\r\n s5 = s5.add(s16.times(BIG_470296));\r\n s6 = s6.add(s16.times(BIG_654183));\r\n s7 = s7.minus(s16.times(BIG_997805));\r\n s8 = s8.add(s16.times(BIG_136657));\r\n s9 = s9.minus(s16.times(BIG_683901));\r\n s16 = BIG_ARR[0];\r\n s3 = s3.add(s15.times(BIG_666643));\r\n s4 = s4.add(s15.times(BIG_470296));\r\n s5 = s5.add(s15.times(BIG_654183));\r\n s6 = s6.minus(s15.times(BIG_997805));\r\n s7 = s7.add(s15.times(BIG_136657));\r\n s8 = s8.minus(s15.times(BIG_683901));\r\n s15 = BIG_ARR[0];\r\n s2 = s2.add(s14.times(BIG_666643));\r\n s3 = s3.add(s14.times(BIG_470296));\r\n s4 = s4.add(s14.times(BIG_654183));\r\n s5 = s5.minus(s14.times(BIG_997805));\r\n s6 = s6.add(s14.times(BIG_136657));\r\n s7 = s7.minus(s14.times(BIG_683901));\r\n s14 = BIG_ARR[0];\r\n s1 = s1.add(s13.times(BIG_666643));\r\n s2 = s2.add(s13.times(BIG_470296));\r\n s3 = s3.add(s13.times(BIG_654183));\r\n s4 = s4.minus(s13.times(BIG_997805));\r\n s5 = s5.add(s13.times(BIG_136657));\r\n s6 = s6.minus(s13.times(BIG_683901));\r\n s13 = BIG_ARR[0];\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n s[0] = s0.shiftRight(BIG_ARR[0]).toJSNumber();\r\n s[1] = s0.shiftRight(BIG_ARR[8]).toJSNumber();\r\n s[2] = s0.shiftRight(BIG_ARR[16]).or(s1.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n s[3] = s1.shiftRight(BIG_ARR[3]).toJSNumber();\r\n s[4] = s1.shiftRight(BIG_ARR[11]).toJSNumber();\r\n s[5] = s1.shiftRight(BIG_ARR[19]).or(s2.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n s[6] = s2.shiftRight(BIG_ARR[6]).toJSNumber();\r\n s[7] = s2.shiftRight(BIG_ARR[14]).or(s3.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n s[8] = s3.shiftRight(BIG_ARR[1]).toJSNumber();\r\n s[9] = s3.shiftRight(BIG_ARR[9]).toJSNumber();\r\n s[10] = s3.shiftRight(BIG_ARR[17]).or(s4.shiftLeft(BIG_ARR[4])).toJSNumber();\r\n s[11] = s4.shiftRight(BIG_ARR[4]).toJSNumber();\r\n s[12] = s4.shiftRight(BIG_ARR[12]).toJSNumber();\r\n s[13] = s4.shiftRight(BIG_ARR[20]).or(s5.shiftLeft(BIG_ARR[1])).toJSNumber();\r\n s[14] = s5.shiftRight(BIG_ARR[7]).toJSNumber();\r\n s[15] = s5.shiftRight(BIG_ARR[15]).or(s6.shiftLeft(BIG_ARR[6])).toJSNumber();\r\n s[16] = s6.shiftRight(BIG_ARR[2]).toJSNumber();\r\n s[17] = s6.shiftRight(BIG_ARR[10]).toJSNumber();\r\n s[18] = s6.shiftRight(BIG_ARR[18]).or(s7.shiftLeft(BIG_ARR[3])).toJSNumber();\r\n s[19] = s7.shiftRight(BIG_ARR[5]).toJSNumber();\r\n s[20] = s7.shiftRight(BIG_ARR[13]).toJSNumber();\r\n s[21] = s8.shiftRight(BIG_ARR[0]).toJSNumber();\r\n s[22] = s8.shiftRight(BIG_ARR[8]).toJSNumber();\r\n s[23] = s8.shiftRight(BIG_ARR[16]).or(s9.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n s[24] = s9.shiftRight(BIG_ARR[3]).toJSNumber();\r\n s[25] = s9.shiftRight(BIG_ARR[11]).toJSNumber();\r\n s[26] = s9.shiftRight(BIG_ARR[19]).or(s10.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n s[27] = s10.shiftRight(BIG_ARR[6]).toJSNumber();\r\n s[28] = s10.shiftRight(BIG_ARR[14]).or(s11.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n s[29] = s11.shiftRight(BIG_ARR[1]).toJSNumber();\r\n s[30] = s11.shiftRight(BIG_ARR[9]).toJSNumber();\r\n s[31] = s11.shiftRight(BIG_ARR[17]).toJSNumber();\r\n}\r\n/**\r\n * Scalar reduce\r\n * where l = 2^252 + 27742317777372353535851937790883648493.\r\n * @param out Where s[0]+256*s[1]+...+256^31*s[31] = s mod l.\r\n * @param s Where s[0]+256*s[1]+...+256^63*s[63] = s.\r\n */\r\nexport function scalarReduce(out, s) {\r\n let s0 = BIG_2097151.and(BigIntHelper.read3(s, 0));\r\n let s1 = BIG_2097151.and(BigIntHelper.read4(s, 2).shiftRight(BIG_ARR[5]));\r\n let s2 = BIG_2097151.and(BigIntHelper.read3(s, 5).shiftRight(BIG_ARR[2]));\r\n let s3 = BIG_2097151.and(BigIntHelper.read4(s, 7).shiftRight(BIG_ARR[7]));\r\n let s4 = BIG_2097151.and(BigIntHelper.read4(s, 10).shiftRight(BIG_ARR[4]));\r\n let s5 = BIG_2097151.and(BigIntHelper.read3(s, 13).shiftRight(BIG_ARR[1]));\r\n let s6 = BIG_2097151.and(BigIntHelper.read4(s, 15).shiftRight(BIG_ARR[6]));\r\n let s7 = BIG_2097151.and(BigIntHelper.read3(s, 18).shiftRight(BIG_ARR[3]));\r\n let s8 = BIG_2097151.and(BigIntHelper.read3(s, 21));\r\n let s9 = BIG_2097151.and(BigIntHelper.read4(s, 23).shiftRight(BIG_ARR[5]));\r\n let s10 = BIG_2097151.and(BigIntHelper.read3(s, 26).shiftRight(BIG_ARR[2]));\r\n let s11 = BIG_2097151.and(BigIntHelper.read4(s, 28).shiftRight(BIG_ARR[7]));\r\n let s12 = BIG_2097151.and(BigIntHelper.read4(s, 31).shiftRight(BIG_ARR[4]));\r\n let s13 = BIG_2097151.and(BigIntHelper.read3(s, 34).shiftRight(BIG_ARR[1]));\r\n let s14 = BIG_2097151.and(BigIntHelper.read4(s, 36).shiftRight(BIG_ARR[6]));\r\n let s15 = BIG_2097151.and(BigIntHelper.read3(s, 39).shiftRight(BIG_ARR[3]));\r\n let s16 = BIG_2097151.and(BigIntHelper.read3(s, 42));\r\n let s17 = BIG_2097151.and(BigIntHelper.read4(s, 44).shiftRight(BIG_ARR[5]));\r\n let s18 = BIG_2097151.and(BigIntHelper.read3(s, 47).shiftRight(BIG_ARR[2]));\r\n let s19 = BIG_2097151.and(BigIntHelper.read4(s, 49).shiftRight(BIG_ARR[7]));\r\n let s20 = BIG_2097151.and(BigIntHelper.read4(s, 52).shiftRight(BIG_ARR[4]));\r\n let s21 = BIG_2097151.and(BigIntHelper.read3(s, 55).shiftRight(BIG_ARR[1]));\r\n let s22 = BIG_2097151.and(BigIntHelper.read4(s, 57).shiftRight(BIG_ARR[6]));\r\n let s23 = BigIntHelper.read4(s, 60).shiftRight(BIG_ARR[3]);\r\n s11 = s11.add(s23.times(BIG_666643));\r\n s12 = s12.add(s23.times(BIG_470296));\r\n s13 = s13.add(s23.times(BIG_654183));\r\n s14 = s14.minus(s23.times(BIG_997805));\r\n s15 = s15.add(s23.times(BIG_136657));\r\n s16 = s16.minus(s23.times(BIG_683901));\r\n s23 = BIG_ARR[0];\r\n s10 = s10.add(s22.times(BIG_666643));\r\n s11 = s11.add(s22.times(BIG_470296));\r\n s12 = s12.add(s22.times(BIG_654183));\r\n s13 = s13.minus(s22.times(BIG_997805));\r\n s14 = s14.add(s22.times(BIG_136657));\r\n s15 = s15.minus(s22.times(BIG_683901));\r\n s22 = BIG_ARR[0];\r\n s9 = s9.add(s21.times(BIG_666643));\r\n s10 = s10.add(s21.times(BIG_470296));\r\n s11 = s11.add(s21.times(BIG_654183));\r\n s12 = s12.minus(s21.times(BIG_997805));\r\n s13 = s13.add(s21.times(BIG_136657));\r\n s14 = s14.minus(s21.times(BIG_683901));\r\n s21 = BIG_ARR[0];\r\n s8 = s8.add(s20.times(BIG_666643));\r\n s9 = s9.add(s20.times(BIG_470296));\r\n s10 = s10.add(s20.times(BIG_654183));\r\n s11 = s11.minus(s20.times(BIG_997805));\r\n s12 = s12.add(s20.times(BIG_136657));\r\n s13 = s13.minus(s20.times(BIG_683901));\r\n s20 = BIG_ARR[0];\r\n s7 = s7.add(s19.times(BIG_666643));\r\n s8 = s8.add(s19.times(BIG_470296));\r\n s9 = s9.add(s19.times(BIG_654183));\r\n s10 = s10.minus(s19.times(BIG_997805));\r\n s11 = s11.add(s19.times(BIG_136657));\r\n s12 = s12.minus(s19.times(BIG_683901));\r\n s19 = BIG_ARR[0];\r\n s6 = s6.add(s18.times(BIG_666643));\r\n s7 = s7.add(s18.times(BIG_470296));\r\n s8 = s8.add(s18.times(BIG_654183));\r\n s9 = s9.minus(s18.times(BIG_997805));\r\n s10 = s10.add(s18.times(BIG_136657));\r\n s11 = s11.minus(s18.times(BIG_683901));\r\n s18 = BIG_ARR[0];\r\n const carry = [];\r\n for (let i = 0; i < 17; i++) {\r\n carry[i] = bigInt(0);\r\n }\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s13 = s13.add(carry[12]);\r\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\r\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s15 = s15.add(carry[14]);\r\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\r\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s17 = s17.add(carry[16]);\r\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s14 = s14.add(carry[13]);\r\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\r\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s16 = s16.add(carry[15]);\r\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\r\n s5 = s5.add(s17.times(BIG_666643));\r\n s6 = s6.add(s17.times(BIG_470296));\r\n s7 = s7.add(s17.times(BIG_654183));\r\n s8 = s8.minus(s17.times(BIG_997805));\r\n s9 = s9.add(s17.times(BIG_136657));\r\n s10 = s10.minus(s17.times(BIG_683901));\r\n s17 = BIG_ARR[0];\r\n s4 = s4.add(s16.times(BIG_666643));\r\n s5 = s5.add(s16.times(BIG_470296));\r\n s6 = s6.add(s16.times(BIG_654183));\r\n s7 = s7.minus(s16.times(BIG_997805));\r\n s8 = s8.add(s16.times(BIG_136657));\r\n s9 = s9.minus(s16.times(BIG_683901));\r\n s16 = BIG_ARR[0];\r\n s3 = s3.add(s15.times(BIG_666643));\r\n s4 = s4.add(s15.times(BIG_470296));\r\n s5 = s5.add(s15.times(BIG_654183));\r\n s6 = s6.minus(s15.times(BIG_997805));\r\n s7 = s7.add(s15.times(BIG_136657));\r\n s8 = s8.minus(s15.times(BIG_683901));\r\n s15 = BIG_ARR[0];\r\n s2 = s2.add(s14.times(BIG_666643));\r\n s3 = s3.add(s14.times(BIG_470296));\r\n s4 = s4.add(s14.times(BIG_654183));\r\n s5 = s5.minus(s14.times(BIG_997805));\r\n s6 = s6.add(s14.times(BIG_136657));\r\n s7 = s7.minus(s14.times(BIG_683901));\r\n s14 = BIG_ARR[0];\r\n s1 = s1.add(s13.times(BIG_666643));\r\n s2 = s2.add(s13.times(BIG_470296));\r\n s3 = s3.add(s13.times(BIG_654183));\r\n s4 = s4.minus(s13.times(BIG_997805));\r\n s5 = s5.add(s13.times(BIG_136657));\r\n s6 = s6.minus(s13.times(BIG_683901));\r\n s13 = BIG_ARR[0];\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n out[0] = s0.shiftRight(BIG_ARR[0]).toJSNumber();\r\n out[1] = s0.shiftRight(BIG_ARR[8]).toJSNumber();\r\n out[2] = s0.shiftRight(BIG_ARR[16]).or(s1.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n out[3] = s1.shiftRight(BIG_ARR[3]).toJSNumber();\r\n out[4] = s1.shiftRight(BIG_ARR[11]).toJSNumber();\r\n out[5] = s1.shiftRight(BIG_ARR[19]).or(s2.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n out[6] = s2.shiftRight(BIG_ARR[6]).toJSNumber();\r\n out[7] = s2.shiftRight(BIG_ARR[14]).or(s3.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n out[8] = s3.shiftRight(BIG_ARR[1]).toJSNumber();\r\n out[9] = s3.shiftRight(BIG_ARR[9]).toJSNumber();\r\n out[10] = s3.shiftRight(BIG_ARR[17]).or(s4.shiftLeft(BIG_ARR[4])).toJSNumber();\r\n out[11] = s4.shiftRight(BIG_ARR[4]).toJSNumber();\r\n out[12] = s4.shiftRight(BIG_ARR[12]).toJSNumber();\r\n out[13] = s4.shiftRight(BIG_ARR[20]).or(s5.shiftLeft(BIG_ARR[1])).toJSNumber();\r\n out[14] = s5.shiftRight(BIG_ARR[7]).toJSNumber();\r\n out[15] = s5.shiftRight(BIG_ARR[15]).or(s6.shiftLeft(BIG_ARR[6])).toJSNumber();\r\n out[16] = s6.shiftRight(BIG_ARR[2]).toJSNumber();\r\n out[17] = s6.shiftRight(BIG_ARR[10]).toJSNumber();\r\n out[18] = s6.shiftRight(BIG_ARR[18]).or(s7.shiftLeft(BIG_ARR[3])).toJSNumber();\r\n out[19] = s7.shiftRight(BIG_ARR[5]).toJSNumber();\r\n out[20] = s7.shiftRight(BIG_ARR[13]).toJSNumber();\r\n out[21] = s8.shiftRight(BIG_ARR[0]).toJSNumber();\r\n out[22] = s8.shiftRight(BIG_ARR[8]).toJSNumber();\r\n out[23] = s8.shiftRight(BIG_ARR[16]).or(s9.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n out[24] = s9.shiftRight(BIG_ARR[3]).toJSNumber();\r\n out[25] = s9.shiftRight(BIG_ARR[11]).toJSNumber();\r\n out[26] = s9.shiftRight(BIG_ARR[19]).or(s10.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n out[27] = s10.shiftRight(BIG_ARR[6]).toJSNumber();\r\n out[28] = s10.shiftRight(BIG_ARR[14]).or(s11.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n out[29] = s11.shiftRight(BIG_ARR[1]).toJSNumber();\r\n out[30] = s11.shiftRight(BIG_ARR[9]).toJSNumber();\r\n out[31] = s11.shiftRight(BIG_ARR[17]).toJSNumber();\r\n}\r\n/**\r\n * Scalar Minimal returns true if the given scalar is less than the order of the Curve.\r\n * @param scalar The scalar.\r\n * @returns True if the given scalar is less than the order of the Curve.\r\n */\r\nexport function scalarMinimal(scalar) {\r\n for (let i = 3; i >= 0; i--) {\r\n const v = BigIntHelper.read8(scalar, i * 8);\r\n if (v > CONST_ORDER[i]) {\r\n return false;\r\n }\r\n else if (v < CONST_ORDER[i]) {\r\n break;\r\n }\r\n else if (i === 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus.\r\n * Which is an extension of https://github.com/golang/crypto/tree/master/ed25519.\r\n * Which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { Sha512 } from \"../hashes/sha512.mjs\";\r\nimport { ArrayHelper } from \"../utils/arrayHelper.mjs\";\r\nimport { ExtendedGroupElement } from \"./edwards25519/extendedGroupElement.mjs\";\r\nimport { ProjectiveGroupElement } from \"./edwards25519/projectiveGroupElement.mjs\";\r\nimport { scalarMinimal, scalarMulAdd, scalarReduce } from \"./edwards25519/scalar.mjs\";\r\n/**\r\n * Implementation of Ed25519.\r\n */\r\nexport class Ed25519 {\r\n /**\r\n * Public returns the PublicKey corresponding to priv.\r\n * @param privateKey The private key to get the corresponding public key.\r\n * @returns The public key.\r\n */\r\n static publicKeyFromPrivateKey(privateKey) {\r\n return privateKey.subarray(32).slice();\r\n }\r\n /**\r\n * Generate the key pair from the seed.\r\n * @param seed The seed to generate the key pair for.\r\n * @returns The key pair.\r\n */\r\n static keyPairFromSeed(seed) {\r\n const privateKey = Ed25519.privateKeyFromSeed(seed.slice(0, Ed25519.SEED_SIZE));\r\n return {\r\n privateKey,\r\n publicKey: Ed25519.publicKeyFromPrivateKey(privateKey)\r\n };\r\n }\r\n /**\r\n * Calculates a private key from a seed.\r\n * @param seed The seed to generate the private key from.\r\n * @returns The private key.\r\n */\r\n static privateKeyFromSeed(seed) {\r\n if (!seed || seed.length !== Ed25519.SEED_SIZE) {\r\n throw new Error(`The seed length is incorrect, it should be ${Ed25519.SEED_SIZE} but is ${seed ? seed.length : 0}`);\r\n }\r\n const sha512 = new Sha512();\r\n sha512.update(seed);\r\n const digest = sha512.digest();\r\n digest[0] &= 248;\r\n digest[31] &= 127;\r\n digest[31] |= 64;\r\n const A = new ExtendedGroupElement();\r\n A.scalarMultBase(digest);\r\n const publicKeyBytes = new Uint8Array(32);\r\n A.toBytes(publicKeyBytes);\r\n const privateKey = new Uint8Array(Ed25519.PRIVATE_KEY_SIZE);\r\n privateKey.set(seed);\r\n privateKey.set(publicKeyBytes, 32);\r\n return privateKey;\r\n }\r\n /**\r\n * Sign the message with privateKey and returns a signature.\r\n * @param privateKey The private key.\r\n * @param message The message to sign.\r\n * @returns The signature.\r\n */\r\n static sign(privateKey, message) {\r\n if (!privateKey || privateKey.length !== Ed25519.PRIVATE_KEY_SIZE) {\r\n throw new Error(\"Bad private key length\");\r\n }\r\n let sha512 = new Sha512();\r\n sha512.update(privateKey.subarray(0, 32));\r\n const digest1 = sha512.digest();\r\n const expandedSecretKey = digest1.slice();\r\n expandedSecretKey[0] &= 248;\r\n expandedSecretKey[31] &= 63;\r\n expandedSecretKey[31] |= 64;\r\n sha512 = new Sha512();\r\n sha512.update(digest1.subarray(32));\r\n sha512.update(message);\r\n const messageDigest = sha512.digest();\r\n const messageDigestReduced = new Uint8Array(32);\r\n scalarReduce(messageDigestReduced, messageDigest);\r\n const R = new ExtendedGroupElement();\r\n R.scalarMultBase(messageDigestReduced);\r\n const encodedR = new Uint8Array(32);\r\n R.toBytes(encodedR);\r\n sha512 = new Sha512();\r\n sha512.update(encodedR);\r\n sha512.update(privateKey.subarray(32));\r\n sha512.update(message);\r\n const hramDigest = sha512.digest();\r\n const hramDigestReduced = new Uint8Array(32);\r\n scalarReduce(hramDigestReduced, hramDigest);\r\n const s = new Uint8Array(32);\r\n scalarMulAdd(s, hramDigestReduced, expandedSecretKey, messageDigestReduced);\r\n const signature = new Uint8Array(Ed25519.SIGNATURE_SIZE);\r\n signature.set(encodedR);\r\n signature.set(s, 32);\r\n return signature;\r\n }\r\n /**\r\n * Verify reports whether sig is a valid signature of message by publicKey.\r\n * @param publicKey The public key to verify the signature.\r\n * @param message The message for the signature.\r\n * @param sig The signature.\r\n * @returns True if the signature matches.\r\n */\r\n static verify(publicKey, message, sig) {\r\n if (!publicKey || publicKey.length !== Ed25519.PUBLIC_KEY_SIZE) {\r\n return false;\r\n }\r\n if (!sig || sig.length !== Ed25519.SIGNATURE_SIZE || (sig[63] & 224) !== 0) {\r\n return false;\r\n }\r\n const A = new ExtendedGroupElement();\r\n if (!A.fromBytes(publicKey)) {\r\n return false;\r\n }\r\n A.X.neg();\r\n A.T.neg();\r\n const h = new Sha512();\r\n h.update(sig.subarray(0, 32));\r\n h.update(publicKey);\r\n h.update(message);\r\n const digest = h.digest();\r\n const hReduced = new Uint8Array(32);\r\n scalarReduce(hReduced, digest);\r\n const R = new ProjectiveGroupElement();\r\n const s = sig.subarray(32).slice();\r\n // https://tools.ietf.org/html/rfc8032#section-5.1.7 requires that s be in\r\n // the range [0, order) in order to prevent signature malleability.\r\n if (!scalarMinimal(s)) {\r\n return false;\r\n }\r\n R.doubleScalarMultVartime(hReduced, A, s);\r\n const checkR = new Uint8Array(32);\r\n R.toBytes(checkR);\r\n return ArrayHelper.equal(sig.subarray(0, 32), checkR);\r\n }\r\n}\r\n/**\r\n * PublicKeySize is the size, in bytes, of public keys as used in this package.\r\n */\r\nEd25519.PUBLIC_KEY_SIZE = 32;\r\n/**\r\n * PrivateKeySize is the size, in bytes, of private keys as used in this package.\r\n */\r\nEd25519.PRIVATE_KEY_SIZE = 64;\r\n/**\r\n * SignatureSize is the size, in bytes, of signatures generated and verified by this package.\r\n */\r\nEd25519.SIGNATURE_SIZE = 64;\r\n/**\r\n * SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032.\r\n */\r\nEd25519.SEED_SIZE = 32;\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Converter } from \"@iota/util.js\";\r\nimport { HmacSha512 } from \"../macs/hmacSha512.mjs\";\r\nimport { Ed25519 } from \"../signatures/ed25519.mjs\";\r\n/**\r\n * Class to help with slip0010 key derivation\r\n * https://github.com/satoshilabs/slips/blob/master/slip-0010.md.\r\n */\r\nexport class Slip0010 {\r\n /**\r\n * Get the master key from the seed.\r\n * @param seed The seed to generate the master key from.\r\n * @returns The key and chain code.\r\n */\r\n static getMasterKeyFromSeed(seed) {\r\n const hmac = new HmacSha512(Converter.utf8ToBytes(\"ed25519 seed\"));\r\n const fullKey = hmac.update(seed).digest();\r\n return {\r\n privateKey: Uint8Array.from(fullKey.slice(0, 32)),\r\n chainCode: Uint8Array.from(fullKey.slice(32))\r\n };\r\n }\r\n /**\r\n * Derive a key from the path.\r\n * @param seed The seed.\r\n * @param path The path.\r\n * @returns The key and chain code.\r\n */\r\n static derivePath(seed, path) {\r\n let { privateKey, chainCode } = Slip0010.getMasterKeyFromSeed(seed);\r\n const segments = path.numberSegments();\r\n for (let i = 0; i < segments.length; i++) {\r\n const indexValue = 0x80000000 + segments[i];\r\n const data = new Uint8Array(1 + privateKey.length + 4);\r\n data[0] = 0;\r\n data.set(privateKey, 1);\r\n data[privateKey.length + 1] = indexValue >>> 24;\r\n data[privateKey.length + 2] = indexValue >>> 16;\r\n data[privateKey.length + 3] = indexValue >>> 8;\r\n data[privateKey.length + 4] = indexValue & 0xff;\r\n // eslint-disable-next-line newline-per-chained-call\r\n const fullKey = new HmacSha512(chainCode).update(data).digest();\r\n privateKey = Uint8Array.from(fullKey.slice(0, 32));\r\n chainCode = Uint8Array.from(fullKey.slice(32));\r\n }\r\n return {\r\n privateKey,\r\n chainCode\r\n };\r\n }\r\n /**\r\n * Get the public key from the private key.\r\n * @param privateKey The private key.\r\n * @param withZeroByte Include a zero bute prefix.\r\n * @returns The public key.\r\n */\r\n static getPublicKey(privateKey, withZeroByte = true) {\r\n const keyPair = Ed25519.keyPairFromSeed(privateKey);\r\n const signPk = keyPair.privateKey.slice(32);\r\n if (withZeroByte) {\r\n const arr = new Uint8Array(1 + signPk.length);\r\n arr[0] = 0;\r\n arr.set(signPk, 1);\r\n return arr;\r\n }\r\n return signPk;\r\n }\r\n}\r\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgEyeClosed = function SvgEyeClosed(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23.7055,11.46295q-1.43475,-3.0227 -3.41479,-4.93035l-1.38442,1.38442c1.12892,1.07886 2.11227,2.49021 2.96257,4.24794c-2.26383,4.68547 -5.47726,6.9112 -9.86887,6.9112q-1.97731,0 -3.64253,-0.60895l-1.50006,1.50006q2.3128,1.06797 5.14259,1.06797q7.84449,0 11.70551,-8.171a1.64046,1.64046 0 0 0 0,-1.40129zm-1.72971,-8.72444l-1.15994,-1.1613a0.21768,0.21768 0 0 0 -0.30801,0l-2.9759,2.97454q-2.4611,-1.25708 -5.53196,-1.25708q-7.84449,0 -11.70551,8.171a1.64073,1.64073 0 0 0 0,1.40129q1.5425,3.24881 3.71409,5.20816l-2.8793,2.87849a0.21768,0.21768 0 0 0 0,0.30774l1.16157,1.16157a0.21768,0.21768 0 0 0 0.30774,0l19.37722,-19.3764a0.21768,0.21768 0 0 0 0,-0.30801zm-19.84468,9.42645c2.26655,-4.68547 5.47999,-6.9112 9.86887,-6.9112c1.484,0 2.83332,0.25468 4.05747,0.77248l-1.91282,1.91282a4.78886,4.78886 0 0 0 -6.47939,6.47939l-2.26981,2.26981c-1.25626,-1.10879 -2.3392,-2.61102 -3.26432,-4.5233zm6.71257,0a3.05045,3.05045 0 0 1 3.97802,-2.90298l-3.83354,3.83354a3.04746,3.04746 0 0 1 -0.14448,-0.93056z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.89115,15.21242c-0.09414,0 -0.18693,-0.00435 -0.2789,-0.01279l-1.4372,1.4372a4.79131,4.79131 0 0 0 6.18798,-6.18798l-1.4372,1.4372c0.00843,0.09197 0.01279,0.18475 0.01279,0.2789a3.04583,3.04583 0 0 1 -3.04746,3.04746z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgEyeClosed);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/eye-closed.6e736a4ac2ce0ee321ba3b737b3cc912.svg\";","import { ArrayHelper } from \"@iota/crypto.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport AsyncComponent from \"./AsyncComponent\";\nimport \"./Graph.scss\";\nimport { GraphProps } from \"./GraphProps\";\nimport { GraphState } from \"./GraphState\";\n\n/**\n * Graph.\n */\nclass Graph extends AsyncComponent {\n /**\n * The graph element.\n */\n private _graphElement: SVGSVGElement | null;\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Create a new instance of Graph.\n * @param props The props.\n */\n constructor(props: GraphProps) {\n super(props);\n\n this._graphElement = null;\n this._resize = () => this.resize();\n\n this.state = {};\n }\n\n /**\n * The component did mount.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n window.addEventListener(\"resize\", this._resize);\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: GraphProps): void {\n let dataEqual = this.props.series.length === prevProps.series.length;\n if (dataEqual) {\n for (let i = 0; i < this.props.series.length; i++) {\n dataEqual = ArrayHelper.equal(this.props.series[i].values, prevProps.series[i].values);\n if (!dataEqual) {\n break;\n }\n }\n }\n if (!dataEqual) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n this._graphElement = null;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
{this.props.caption}
\n
\n {this.props.series.length > 1 && this.props.series.map((s, idx) => (\n \n
\n \n {s.label}\n \n \n ))}\n
\n
\n \n this.setElement(r)}\n >\n {this.state.paths?.map((b, idx) => (\n \n ))}\n {this.state.text?.map((t, idx) => (\n \n {t.content}\n \n ))}\n \n \n
\n );\n }\n\n /**\n * Set the graph element.\n * @param element The element.\n */\n private setElement(element: SVGSVGElement | null): void {\n setTimeout(() => {\n if (!this._graphElement && element) {\n this._graphElement = element;\n this.setState(this.calculateGraph());\n }\n }, 100);\n }\n\n /**\n * The window was resized.\n */\n private resize(): void {\n if (this._graphElement) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * Calculate the graph points.\n * @returns The graph points.\n */\n private calculateGraph(): {\n paths: {\n path: string;\n className: string;\n }[];\n text: {\n x: number;\n y: number;\n content: string;\n }[];\n } {\n const paths = [];\n const text = [];\n const axis = [];\n\n if (this._graphElement && this.props.series.length > 0) {\n const axisLabelHeight = 20;\n\n try {\n const graphWidth = this._graphElement.width.baseVal.value;\n const graphHeight = this._graphElement.height.baseVal.value - axisLabelHeight;\n\n let seriesMaxLength = this.props.seriesMaxLength;\n if (graphWidth < 500) {\n seriesMaxLength /= 2;\n }\n\n const actualSeriesValues: number[][] =\n this.props.series.map(s => s.values.slice(-seriesMaxLength));\n\n let maxY = 0;\n const maxItems = Math.min(seriesMaxLength, actualSeriesValues[0].length);\n\n for (let i = 0; i < actualSeriesValues.length; i++) {\n for (let j = 0; j < actualSeriesValues[i].length; j++) {\n if (actualSeriesValues[i][j] > maxY) {\n maxY = actualSeriesValues[i][j];\n }\n }\n }\n\n if (maxY === 0) {\n maxY = 4;\n }\n\n const yUsage = 0.9;\n const axisLabelWidth = 30;\n const marginLeft = 10;\n const marginRight = 10;\n const axisLineCount = 4;\n const decimalPlaces = maxY <= 2 ? 2 : 0;\n\n const yScale = (graphHeight * yUsage) / maxY;\n const barWidth = (graphWidth - axisLabelWidth - marginLeft - marginRight) /\n (seriesMaxLength * this.props.series.length);\n const axisSpacing = graphHeight / (axisLineCount - 1);\n\n for (let i = 0; i < axisLineCount; i++) {\n axis.push({\n path: `M ${axisLabelWidth} ${graphHeight - (i * axisSpacing)\n } L ${graphWidth} ${graphHeight - (i * axisSpacing)}`,\n className: \"axis-color\"\n });\n text.push({\n x: axisLabelWidth - 5,\n y: graphHeight - (i * axisSpacing) + 2,\n anchor: \"end\",\n content: (i * ((maxY / yUsage) / (axisLineCount - 1))).toFixed(decimalPlaces)\n });\n }\n\n if (this.props.timeInterval && this.props.endTime) {\n let numTimeEntries = this.props.timeMarkers ?? Math.floor(graphWidth / 100);\n if (graphWidth < 300) {\n numTimeEntries = 3;\n }\n const startTime = this.props.endTime - (maxItems * this.props.timeInterval);\n const timePerInterval = (seriesMaxLength * this.props.timeInterval) / numTimeEntries;\n for (let i = 0; i <= numTimeEntries; i++) {\n const dt = new Date(startTime + (i * timePerInterval));\n text.push({\n x: marginLeft + (axisLabelWidth / 2) +\n (((graphWidth - marginLeft - marginRight) / numTimeEntries) * i),\n y: graphHeight + axisLabelHeight,\n anchor: \"middle\",\n content: `${dt.getHours().toString()\n .padStart(2, \"0\")}:${dt.getMinutes().toString()\n .padStart(2, \"0\")}.${dt.getSeconds().toString()\n .padStart(2, \"0\")}`\n });\n }\n }\n\n for (let i = 0; i < maxItems; i++) {\n for (let j = 0; j < actualSeriesValues.length; j++) {\n const val = actualSeriesValues[j][i];\n paths.push({\n path: this.calculatePath(\n graphHeight,\n barWidth,\n axisLabelWidth + marginLeft,\n j + (i * actualSeriesValues.length),\n val * yScale),\n className: this.props.series[j].className\n });\n }\n }\n } catch {}\n }\n\n return {\n text,\n paths: [...axis, ...paths.reverse()]\n };\n }\n\n /**\n * Calculate the path for the bar.\n * @param graphHeight The height of the graph.\n * @param barWidth The width of bars.\n * @param marginLeft The left margin for axis.\n * @param index The bar index.\n * @param scaledVal The end value.\n * @returns The path.\n */\n private calculatePath(\n graphHeight: number, barWidth: number, marginLeft: number,\n index: number, scaledVal: number): string {\n const spacing = 2;\n let pathSegments = [`M ${marginLeft + (index * barWidth) + spacing} ${graphHeight}`];\n\n pathSegments = [\n ...pathSegments,\n ...(scaledVal <= 0 ? [\n `L ${marginLeft + ((index * barWidth) + spacing)} ${graphHeight - 1}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - 1}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight}`\n ] : [\n `L ${marginLeft + (index * barWidth) + spacing} ${graphHeight - scaledVal}`,\n `C ${marginLeft + (index * barWidth) + spacing} ${graphHeight - scaledVal - 10\n } ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - scaledVal - 10\n } ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - scaledVal}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight}`\n ])\n ];\n\n return pathSegments.join(\" \");\n }\n}\n\nexport default Graph;\n","/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\nimport React, { useRef } from \"react\";\nimport \"./Tooltip.scss\";\n\ninterface TooltipProps {\n tooltipContent: string | React.ReactNode;\n children: React.ReactNode;\n}\n\n/**\n * Component to display a tooltip on hover.\n */\nconst Tooltip: React.FC = ({ children, tooltipContent }) => {\n const tooltip = useRef(null);\n\n const onEnter = () => {\n if (tooltip?.current) {\n tooltip.current.style.visibility = \"visible\";\n tooltip.current.style.opacity = \"1\";\n }\n };\n\n const onLeave = () => {\n if (tooltip?.current) {\n tooltip.current.style.visibility = \"hidden\";\n tooltip.current.style.opacity = \"0\";\n }\n };\n\n return (\n
\n
\n
\n {tooltipContent}\n
\n
\n {children}\n
\n
\n );\n};\n\nexport default Tooltip;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./InfoPanel.scss\";\nimport { InfoPanelProps } from \"./InfoPanelProps\";\nimport Tooltip from \"./Tooltip\";\n\nconst SYNC_STATUS_CAPTION = \"Finalized Slot / Committed Slot\";\n\n/**\n * Info panel.\n */\nclass InfoPanel extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n let latestFinalizedSlot = \"\";\n let latestCommitmentSlot = \"\";\n if (this.props.caption === SYNC_STATUS_CAPTION && this.props.value) {\n const slots = this.props.value.split(\"/\");\n latestFinalizedSlot = slots[0];\n latestCommitmentSlot = slots[1];\n }\n return (\n
\n
\n
\n {this.props.icon}\n
\n
\n

{this.props.caption}

\n {\n this.props.caption === SYNC_STATUS_CAPTION ?\n \n {\n this.props.value ?\n
\n {latestFinalizedSlot} / {latestCommitmentSlot}\n
:\n \"-\"\n }\n :\n
{this.props.value ?? \"-\"}
\n }\n
\n
\n );\n }\n}\n\nexport default InfoPanel;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgEye = function SvgEye(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23.69284,11.29876c-2.57667,-5.42785 -6.47156,-8.15945 -11.69285,-8.15945c-5.224,0 -9.11619,2.73159 -11.69285,8.16217a1.63896,1.63896 0 0 0 0,1.39977c2.57667,5.42785 6.47156,8.15945 11.69285,8.15945c5.224,0 9.11619,-2.73159 11.69285,-8.16217c0.20929,-0.44032 0.20929,-0.9513 0,-1.39977zm-11.69285,7.60498c-4.38414,0 -7.5941,-2.22332 -9.8582,-6.90373c2.2641,-4.68041 5.47406,-6.90373 9.8582,-6.90373c4.38414,0 7.5941,2.22332 9.8582,6.90373c-2.26138,4.68041 -5.47134,6.90373 -9.8582,6.90373zm-0.10872,-11.68742c-2.6419,0 -4.78369,2.14179 -4.78369,4.78369s2.14179,4.78369 4.78369,4.78369s4.78369,-2.14179 4.78369,-4.78369s-2.14179,-4.78369 -4.78369,-4.78369zm0,7.82785c-1.68245,0 -3.04417,-1.36172 -3.04417,-3.04417s1.36172,-3.04417 3.04417,-3.04417s3.04417,1.36172 3.04417,3.04417s-1.36172,3.04417 -3.04417,3.04417z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgEye);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/eye.8f64de3bdaad08c216b1df66468d4990.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronLeft = function SvgChevronLeft(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.51794 6.98708L7.68154 12.1921C7.78117 12.2891 7.86064 12.4052 7.91531 12.5334C7.96998 12.6617 7.99876 12.7997 7.99996 12.9393C8.00116 13.079 7.97477 13.2174 7.92232 13.3467C7.86987 13.4759 7.79241 13.5933 7.69447 13.692C7.59652 13.7907 7.48005 13.8688 7.35185 13.9217C7.22365 13.9746 7.08629 14.0012 6.94778 14C6.80928 13.9987 6.67239 13.9697 6.54513 13.9146C6.41786 13.8595 6.30275 13.7794 6.20652 13.679L0.30542 7.73051C0.10986 7.53332 0 7.26591 0 6.98708C0 6.70825 0.10986 6.44084 0.30542 6.24365L6.20652 0.295175C6.40326 0.103632 6.66677 -0.00235606 6.94028 3.97504e-05C7.21379 0.00243556 7.47542 0.113023 7.66883 0.307985C7.86224 0.502946 7.97195 0.766681 7.97432 1.04239C7.9767 1.31809 7.87156 1.58371 7.68154 1.78203L2.51794 6.98708Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronLeft);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-left.ab1f7871604e78b85cd9b06fc83d5121.svg\";","import { HexEncodedString } from \"../models/hexEncodedTypes\";\nimport { IPeer } from \"../models/peers/IPeer\";\n\n/**\n * Class to help with processing of data.\n */\nexport class DataHelper {\n /**\n * Computes a slotIndex from a block, transaction or slotCommitment Id.\n * @param id The block, transaction or slotCommitment Id.\n * @returns The slotIndex.\n */\n public static computeSlotIndex(\n id: HexEncodedString\n ): number {\n const numberString = id.slice(-8);\n const chunks = [];\n\n for (\n let charsLength = numberString.length, i = 0;\n i < charsLength;\n i += 2\n ) {\n chunks.push(numberString.slice(i, i + 2));\n }\n const separated = chunks.map(n => Number.parseInt(n, 16));\n const buf = Uint8Array.from(separated).buffer;\n const view = new DataView(buf);\n\n return view.getUint32(0, true);\n }\n\n /**\n * Format the address for the peer.\n * @param peer The peer.\n * @returns The formatted address.\n */\n public static formatPeerAddress(peer: IPeer): string | undefined {\n let address;\n\n if (peer.multiAddresses) {\n for (let i = 0; i < peer.multiAddresses.length && !address; i++) {\n address = this.extractAddress(peer.multiAddresses[i]);\n }\n }\n\n return address;\n }\n\n /**\n * Extract an an address.\n * @param address The address to extract.\n * @returns The formatted address.\n */\n public static extractAddress(address: string): string | undefined {\n let addr = DataHelper.extractIp4(address);\n\n if (!addr) {\n addr = DataHelper.extractIp6(address);\n }\n\n if (!addr) {\n addr = DataHelper.extractDns(address);\n }\n\n return addr;\n }\n\n /**\n * Extract and format an IPv4 address.\n * @param address The address to extract.\n * @returns The formatted address.\n */\n public static extractIp4(address: string): string | undefined {\n const parts = /\\/ip4\\/((?:\\d{1,3}.){3}\\d{1,3})\\/tcp\\/(\\d*)/.exec(address);\n\n if (parts && parts.length === 3) {\n return `${parts[1]}:${parts[2]}`;\n }\n }\n\n /**\n * Extract and format an IPv6 address.\n * @param address The address to extract.\n * @returns The formatted address.\n */\n public static extractIp6(address: string): string | undefined {\n const parts = /\\/ip6\\/(.*?)\\/tcp\\/(\\d*)/.exec(address);\n\n if (parts && parts.length === 3) {\n return `${parts[1]}:${parts[2]}`;\n }\n }\n\n /**\n * Extract and format a dns address.\n * @param addr The address to extract.\n * @returns The formatted address.\n */\n public static extractDns(addr: string): string | undefined {\n const parts = /\\/dns\\/(.*?)\\/tcp\\/(\\d*)/.exec(addr);\n\n if (parts && parts.length === 3) {\n return `${parts[1]}:${parts[2]}`;\n }\n }\n\n /**\n * Sort a list of peers.\n * @param peers The peers to sort.\n * @returns The sorted peers.\n */\n public static sortPeers(peers: T[]): T[] {\n return peers.sort((a, b) => {\n if (a.connected !== b.connected) {\n return a.connected ? -1 : 1;\n }\n\n return (a.alias ?? a.id).localeCompare(b.alias ?? b.id);\n });\n }\n}\n","import React, { Component, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ReactComponent as EyeClosedIcon } from \"../../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../../assets/eye.svg\";\nimport { ReactComponent as HealthBadIcon } from \"../../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../../assets/health-good.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IPeer } from \"../../../models/peers/IPeer\";\nimport { IPeersResponse } from \"../../../models/peers/IPeersResponse\";\nimport { WebSocketTopic } from \"../../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../../services/metricsService\";\nimport { SettingsService } from \"../../../services/settingsService\";\nimport { DataHelper } from \"../../../utils/dataHelper\";\nimport \"./PeersSummaryPanel.scss\";\nimport { PeersSummaryState } from \"./PeersSummaryState\";\n\n/**\n * Display a list of the peers.\n */\nclass PeersSummaryPanel extends Component {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer metrics subscription id.\n */\n private _peerMetricsSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of PeersSummaryPanel.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._peerMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetrics,\n data => {\n this.handleData(data.peers);\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n if (this._peerMetricsSubscription) {\n this._metricsService.unsubscribe(this._peerMetricsSubscription);\n this._peerMetricsSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n

Peers

\n this.toggleBlindMode()}\n className=\"peers-summary--icon-button\"\n >\n {this.state.blindMode ? : }\n \n
\n {!this.state.peers && (\n

There are no peers.

\n )}\n {this.state.peers?.map((p, idx) => (\n \n
\n {p.connected ? : }\n
\n
\n
\n {this.state.blindMode && (\"*\".repeat((p.alias ?? p.id).length))}\n {!this.state.blindMode && (p.alias ?? p.id)}\n
\n {p.address && (\n
\n {this.state.blindMode ? \"*\".repeat(p.address.length) : p.address}\n
\n )}\n
\n \n ))}\n
\n );\n }\n\n /**\n * Handle the peer data.\n * @param data The data to handle.\n */\n private handleData(data: IPeer[]): void {\n let sortedPeers;\n\n if (data) {\n sortedPeers = DataHelper.sortPeers(data.map(p => ({\n id: p.id,\n alias: p.alias,\n connected: p.connected,\n address: DataHelper.formatPeerAddress(p)\n })));\n }\n\n this.setState({\n peers: sortedPeers\n });\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default PeersSummaryPanel;\n","import React, { ReactNode } from \"react\";\nimport { ReactComponent as BannerCurve } from \"../../assets/banner-curve.svg\";\nimport { ReactComponent as ConfirmationIcon } from \"../../assets/confirmation.svg\";\nimport { ReactComponent as DbIcon } from \"../../assets/db-icon.svg\";\nimport { ReactComponent as MemoryIcon } from \"../../assets/memory.svg\";\nimport { ReactComponent as MilestoneIcon } from \"../../assets/milestone.svg\";\nimport { ReactComponent as PruningIcon } from \"../../assets/pruning.svg\";\nimport { ReactComponent as UptimeIcon } from \"../../assets/uptime.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { INetworkMetrics } from \"../../models/info/INetworkMetrics\";\nimport { IDatabaseSizesMetrics } from \"../../models/websocket/IDatabaseSizesMetrics\";\nimport { IGossipMetrics } from \"../../models/websocket/IGossipMetrics\";\nimport { INodeInfoExtended } from \"../../models/websocket/INodeInfoExtended\";\nimport { IPublicNodeStatus } from \"../../models/websocket/IPublicNodeStatus\";\nimport { ISyncStatus } from \"../../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { EventAggregator } from \"../../services/eventAggregator\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { NodeConfigService } from \"../../services/nodeConfigService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { ThemeService } from \"../../services/themeService\";\nimport { BrandHelper } from \"../../utils/brandHelper\";\nimport { FormatHelper } from \"../../utils/formatHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Graph from \"../components/layout/Graph\";\nimport InfoPanel from \"../components/layout/InfoPanel\";\nimport PeersSummaryPanel from \"../components/tangle/PeersSummaryPanel\";\nimport \"./Home.scss\";\nimport { HomeState } from \"./HomeState\";\n\n/**\n * Home panel.\n */\nclass Home extends AsyncComponent {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The node info extended subscription id.\n */\n private _nodeInfoExtendedSubscription?: string;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * The network metrics subscription id.\n */\n private _networkMetricsSubscription?: string;\n\n /**\n * The gossip metrics subscription id.\n */\n private _gossipMetricsSubscription?: string;\n\n /**\n * The database size metrics subscription id.\n */\n private _databaseSizeSubscription?: string;\n\n /**\n * The network id.\n */\n private readonly _networkId?: string;\n\n /**\n * Create a new instance of Home.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._themeService = ServiceFactory.get(\"theme\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n this._networkId = nodeConfigService.getNetworkId();\n\n this.state = {\n nodeName: \"\",\n nodeId: \"\",\n displayVersion: \"\",\n displayLatestVersion: \"\",\n latestCommitmentSlot: \"-\",\n latestFinalizedSlot: \"-\",\n pruningEpoch: \"-\",\n bps: \"-\",\n rbps: \"-\",\n referencedRate: \"-\",\n memory: \"-\",\n dbSizePermanentFormatted: \"-\",\n dbSizePrunableFormatted: \"-\",\n dbSizeTxRetainerFormatted: \"-\",\n dbSizeTotalFormatted: \"-\",\n uptime: \"-\",\n lastReceivedBpsTime: 0,\n bpsIncoming: [],\n bpsOutgoing: [],\n bannerSrc: \"\",\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n this.setState({\n bannerSrc: await BrandHelper.getBanner(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"home\", async (theme: string) => {\n this.setState({\n bannerSrc: await BrandHelper.getBanner(theme)\n });\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n const pruningEpoch = data.pruningEpoch.toString();\n\n if (pruningEpoch !== this.state.pruningEpoch) {\n this.setState({ pruningEpoch });\n }\n }\n });\n\n this._nodeInfoExtendedSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeInfoExtended,\n data => {\n if (data) {\n const nodeName = data.nodeAlias ?? BrandHelper.getConfiguration().name;\n const nodeId = data.nodeId || \"No node Id.\";\n const uptime = FormatHelper.duration(data.uptime);\n const memory = FormatHelper.iSize(data.memoryUsage);\n\n if (nodeName !== this.state.nodeName) {\n this.setState({ nodeName });\n }\n\n if (nodeId !== this.state.nodeId) {\n this.setState({ nodeId });\n }\n\n if (uptime !== this.state.uptime) {\n this.setState({ uptime });\n }\n\n if (memory !== this.state.memory) {\n this.setState({ memory });\n }\n\n this.checkVersion(data.version, data.latestVersion);\n }\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const latestFinalizedSlot = data.latestFinalizedSlot ? data.latestFinalizedSlot.toString() : \"\";\n const latestCommitmentSlot = data.latestCommitmentSlot ? data.latestCommitmentSlot.toString() : \"\";\n\n if (latestFinalizedSlot !== this.state.latestFinalizedSlot) {\n this.setState({ latestFinalizedSlot });\n }\n\n if (latestCommitmentSlot !== this.state.latestCommitmentSlot) {\n this.setState({ latestCommitmentSlot });\n }\n }\n });\n\n this._networkMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.NetworkMetrics,\n data => {\n if (data) {\n let bps = \"-\";\n let rbps = \"-\";\n let referencedRate = \"-\";\n\n if (data.blocksPerSecond) {\n bps = Number.parseFloat(data.blocksPerSecond).toFixed(1)\n.toString();\n }\n if (data.confirmedBlocksPerSecond) {\n rbps = Number.parseFloat(data.confirmedBlocksPerSecond).toFixed(1)\n.toString();\n }\n if (data.confirmationRate) {\n referencedRate = `${Number.parseFloat(data.confirmationRate).toFixed(1)\n.toString()}%`;\n }\n\n this.setState({\n bps,\n rbps,\n referencedRate\n });\n }\n }\n );\n\n this._gossipMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.GossipMetrics,\n undefined,\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n\n const bpsIncoming = nonNull.map(m => m.incoming);\n const bpsOutgoing = nonNull.map(m => m.outgoing);\n\n this.setState({ bpsIncoming, bpsOutgoing, lastReceivedBpsTime: Date.now() });\n }\n );\n\n this._databaseSizeSubscription = this._metricsService.subscribe(\n WebSocketTopic.DatabaseSizeMetric,\n data => {\n if (data) {\n if (data.databaseSizes.length === 0) {\n return;\n }\n\n const dbSizeMetric = data.databaseSizes[0];\n\n const dbSizePermanentFormatted = FormatHelper.size(dbSizeMetric.permanent);\n if (dbSizePermanentFormatted !== this.state.dbSizePermanentFormatted) {\n this.setState({ dbSizePermanentFormatted });\n }\n\n const dbSizePrunableFormatted = FormatHelper.size(dbSizeMetric.prunable);\n if (dbSizePrunableFormatted !== this.state.dbSizePrunableFormatted) {\n this.setState({ dbSizePrunableFormatted });\n }\n\n const dbSizeTxRetainerFormatted = FormatHelper.size(dbSizeMetric.txRetainer);\n if (dbSizeTxRetainerFormatted !== this.state.dbSizeTxRetainerFormatted) {\n this.setState({ dbSizeTxRetainerFormatted });\n }\n\n const dbSizeTotalFormatted = FormatHelper.size(dbSizeMetric.total);\n if (dbSizeTotalFormatted !== this.state.dbSizeTotalFormatted) {\n this.setState({ dbSizeTotalFormatted });\n }\n }\n });\n\n EventAggregator.subscribe(\"settings.blindMode\", \"home\", blindMode => {\n this.setState({ blindMode });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"theme\", \"home\");\n\n if (this._nodeInfoExtendedSubscription) {\n this._metricsService.unsubscribe(this._nodeInfoExtendedSubscription);\n this._nodeInfoExtendedSubscription = undefined;\n }\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n\n if (this._networkMetricsSubscription) {\n this._metricsService.unsubscribe(this._networkMetricsSubscription);\n this._networkMetricsSubscription = undefined;\n }\n\n if (this._gossipMetricsSubscription) {\n this._metricsService.unsubscribe(this._gossipMetricsSubscription);\n this._gossipMetricsSubscription = undefined;\n }\n\n if (this._databaseSizeSubscription) {\n this._metricsService.unsubscribe(this._databaseSizeSubscription);\n this._databaseSizeSubscription = undefined;\n }\n\n EventAggregator.unsubscribe(\"settings.blindMode\", \"home\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n
\n
\n
\n

{this.state.blindMode ? \"**********\" : this.state.nodeName}

\n {this.state.nodeId && (\n

\n {this.state.blindMode ? \"*********\" : this.state.nodeId}\n

\n )}\n
\n

\n {this._networkId}\n

\n

\n {this.state.displayVersion}{this.state.displayLatestVersion}\n

\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"orange\"\n />\n
\n
\n }\n backgroundStyle=\"blue\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"green\"\n />\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"green\"\n />\n
\n
\n
\n \n
\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"blue\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
\n
\n
\n \n
\n
\n
\n
\n );\n }\n\n /**\n * Check to see if a new version is available.\n * @param currentVersion The current version.\n * @param latestVersion The latest resion.\n */\n private checkVersion(currentVersion: string, latestVersion: string): void {\n if (this.state.version !== currentVersion ||\n this.state.latestVersion !== latestVersion) {\n const comparison = this.compareVersions(currentVersion, latestVersion);\n\n this.setState({\n version: currentVersion,\n latestVersion,\n displayVersion: currentVersion\n });\n\n if (comparison < 0) {\n this.setState({ displayLatestVersion: ` - a new version ${latestVersion} is available.` });\n }\n }\n }\n\n /**\n * Compare two versions.\n * @param first The first version.\n * @param second The second versions.\n * @returns 0 if the same, 1 if a > b or -1 if a < b.\n */\n private compareVersions(first: string, second: string): number {\n const partsFirst = first.split(\".\");\n const partsSecond = second.split(\".\");\n\n if (partsFirst.length === 3 && partsSecond.length === 3) {\n for (let i = 0; i < 3; i++) {\n const na = Number.parseInt(partsFirst[i], 10);\n const nb = Number.parseInt(partsSecond[i], 10);\n if (na > nb) {\n return 1;\n }\n if (nb > na) {\n return -1;\n }\n\n if (i === 2) {\n let firstAlphabet = 96;\n let secondAlphabet = 96;\n const firstIndex = partsFirst[i].indexOf(\"-\");\n if (firstIndex > 0) {\n firstAlphabet = partsFirst[i].codePointAt(firstIndex + 1) ?? Number.NaN;\n }\n const secondIndex = partsSecond[i].indexOf(\"-\");\n if (secondIndex > 0) {\n secondAlphabet = partsSecond[i].codePointAt(secondIndex + 1) ?? Number.NaN;\n }\n\n return firstAlphabet - secondAlphabet;\n }\n }\n }\n\n return 0;\n }\n}\n\nexport default Home;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./Spinner.scss\";\nimport { SpinnerProps } from \"./SpinnerProps\";\n\n/**\n * Component which will display a spinner.\n */\nclass Spinner extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n );\n }\n}\n\nexport default Spinner;\n","import React, { ReactNode } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { AuthService } from \"../../services/authService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Login.scss\";\nimport { LoginState } from \"./LoginState\";\n\n/**\n * Login panel.\n */\nclass Login extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of Login.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n user: \"\",\n password: \"\",\n isBusy: false,\n error: false,\n redirect: this._authService.isLoggedIn() ? \"/\" : \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n if (this.state.redirect.length > 0) {\n return ;\n }\n return (\n
\n
\n

Login

\n
\n
\n

Please enter your credentials to unlock the full dashboard.

\n
\n User\n
\n
\n this.setState({ user: e.target.value })}\n autoFocus={true}\n />\n
\n
\n Password\n
\n
\n this.setState({ password: e.target.value })}\n onKeyDown={e => {\n if (e.key === \"Enter\" &&\n this.state.password.trim().length > 0 &&\n this.state.user.trim().length > 0) {\n this.login();\n }\n }}\n />\n
\n
\n
\n this.login()}\n >\n Login\n \n {this.state.isBusy && (\n \n )}\n {this.state.error && (\n

Your login attempt failed, please try again.

\n )}\n
\n
\n
\n
\n
\n );\n }\n\n /**\n * Try the login.\n */\n private login(): void {\n this.setState({\n isBusy: true,\n error: false\n }, async () => {\n const success = await this._authService.login(this.state.user, this.state.password);\n\n this.setState({\n isBusy: false,\n error: !success\n });\n });\n }\n}\n\nexport default Login;\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgCopy = function SvgCopy(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 9 1 L 16 1 C 16.552 1 17 1.448 17 2 L 17 9 C 17 9.552 16.552 10 16 10 L 9 10 C 8.448 10 8 9.552 8 9 L 8 2 C 8 1.448 8.448 1 9 1 Z\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \" M 5.125 6 L 4 6 C 2.895 6 2 6.895 2 8 L 2 14 C 2 15.105 2.895 16 4 16 L 10 16 C 11.105 16 12 15.105 12 14 L 12 12.875\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgCopy);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/copy.c627cf0b9bce73941709ff5324f011e6.svg\";","/**\n * Helper methods for clipboard.\n */\nexport class ClipboardHelper {\n /**\n * Copy the text to the clipboard.\n * @param text The text to copy.\n * @returns True id the text was copied.\n */\n public static copy(text: string | undefined): boolean {\n if (text !== undefined && text !== null) {\n try {\n const textArea = document.createElement(\"textarea\");\n\n // Prevent zooming on iOS\n textArea.style.fontSize = \"12pt\";\n // Reset box model\n textArea.style.border = \"0\";\n textArea.style.padding = \"0\";\n textArea.style.margin = \"0\";\n // Move element out of screen horizontally\n textArea.style.position = \"absolute\";\n textArea.style.left = \"-9999px\";\n // Move element to the same position vertically\n const yPosition = window.pageYOffset || document.documentElement.scrollTop;\n textArea.style.top = `${yPosition}px`;\n\n textArea.setAttribute(\"readonly\", \"\");\n textArea.value = text;\n\n document.body.append(textArea);\n\n textArea.select();\n document.execCommand(\"Copy\");\n textArea.remove();\n\n return true;\n } catch {\n // Not much we can do\n return false;\n }\n } else {\n return false;\n }\n }\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronRight = function SvgChevronRight(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.48206 6.98708L0.318462 12.1921C0.218831 12.2891 0.139361 12.4052 0.0846907 12.5334C0.0300203 12.6617 0.00124313 12.7997 3.95234e-05 12.9393C-0.00116408 13.079 0.0252297 13.2174 0.0776802 13.3467C0.130131 13.4759 0.207588 13.5933 0.305532 13.692C0.403476 13.7907 0.519946 13.8688 0.648146 13.9217C0.776345 13.9746 0.913707 14.0012 1.05222 14C1.19072 13.9987 1.32761 13.9697 1.45487 13.9146C1.58214 13.8595 1.69725 13.7794 1.79348 13.679L7.69458 7.73051C7.89014 7.53332 8 7.26591 8 6.98708C8 6.70825 7.89014 6.44084 7.69458 6.24365L1.79348 0.295175C1.59674 0.103632 1.33323 -0.00235606 1.05972 3.97504e-05C0.786213 0.00243556 0.524578 0.113023 0.331169 0.307985C0.137761 0.502946 0.0280534 0.766681 0.0256767 1.04239C0.0232999 1.31809 0.128444 1.58371 0.318462 1.78203L5.48206 6.98708Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronRight);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-right.ee38b69009bb3d676c31944fd31791aa.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as CopyIcon } from \"../../../assets/copy.svg\";\nimport \"./BlockButton.scss\";\nimport { BlockButtonProps } from \"./BlockButtonProps\";\nimport { BlockButtonState } from \"./BlockButtonState\";\n\n/**\n * Component which will display a block button.\n */\nclass BlockButton extends Component {\n /**\n * Create a new instance of BlockButton.\n * @param props The props.\n */\n constructor(props: BlockButtonProps) {\n super(props);\n\n this.state = {\n active: false,\n message: props.buttonType === \"copy\" ? \"Copied\" : \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.activate()}\n >\n {this.props.buttonType === \"copy\" && (\n \n )}\n \n {this.state.active && this.state.message && (\n \n {this.state.message}\n \n )}\n
\n );\n }\n\n /**\n * Activate the button.\n */\n private activate(): void {\n this.props.onClick();\n\n this.setState({ active: true });\n setTimeout(\n () => {\n this.setState({ active: false });\n },\n 2000);\n }\n}\n\nexport default BlockButton;\n","import React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../assets/chevron-left.svg\";\nimport { ReactComponent as EyeClosedIcon } from \"../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../assets/eye.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IPeersResponse } from \"../../models/peers/IPeersResponse\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { ClipboardHelper } from \"../../utils/clipboardHelper\";\nimport { DataHelper } from \"../../utils/dataHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport BlockButton from \"../components/layout/BlockButton\";\nimport Graph from \"../components/layout/Graph\";\nimport HealthIndicator from \"../components/layout/HealthIndicator\";\nimport \"./Peer.scss\";\nimport { PeerRouteProps } from \"./PeerRouteProps\";\nimport { PeerState } from \"./PeerState\";\n\n/**\n * Peer panel.\n */\nclass Peer extends AsyncComponent, PeerState> {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer metrics subscription id.\n */\n private _peerMetricsSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n address: \"\",\n isConnected: false,\n receivedPacketsDiff: [],\n sentPacketsDiff: [],\n relation: \"-\",\n lastUpdateTime: 0,\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._peerMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetrics,\n undefined,\n allData => {\n let alias;\n let address: string = \"\";\n let isConnected = false;\n const receivedPacketsTotal = [];\n const sentPacketsTotal = [];\n const receivedPacketsDiff = [];\n const sentPacketsDiff = [];\n let gossipMetrics;\n let relation = \"-\";\n\n for (const allDataPeers of allData) {\n if (allDataPeers?.peers) {\n const peer = allDataPeers.peers.find(p => p.id === this.props.match.params.id);\n\n if (peer && peer.id === this.props.match.params.id) {\n alias = peer.alias;\n address = DataHelper.formatPeerAddress(peer) ?? \"\";\n isConnected = peer.connected;\n gossipMetrics = peer.gossipMetrics;\n relation = peer.relation;\n\n receivedPacketsTotal.push(gossipMetrics.packetsReceived);\n sentPacketsTotal.push(gossipMetrics.packetsSent);\n }\n }\n }\n\n for (let i = 1; i < receivedPacketsTotal.length; i++) {\n receivedPacketsDiff.push(\n Math.max(\n receivedPacketsTotal[i] - receivedPacketsTotal[i - 1]\n , 0)\n );\n }\n for (let i = 1; i < sentPacketsTotal.length; i++) {\n sentPacketsDiff.push(\n Math.max(\n sentPacketsTotal[i] - sentPacketsTotal[i - 1]\n , 0)\n );\n }\n\n this.setState({\n alias,\n address,\n isConnected,\n receivedPacketsDiff,\n sentPacketsDiff,\n gossipMetrics,\n relation,\n lastUpdateTime: Date.now()\n });\n }\n );\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._peerMetricsSubscription) {\n this._metricsService.unsubscribe(this._peerMetricsSubscription);\n this._peerMetricsSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n \n \n

Back to Peers

\n \n this.toggleBlindMode()}\n className=\"peer--icon-button\"\n >\n {this.state.blindMode ? : }\n \n
\n\n
\n
\n
\n {this.state.alias && (\n \n

{this.state.blindMode\n ? \"*\".repeat(this.state.alias.length) : this.state.alias}\n

\n \n

{this.state.blindMode\n ? \"*\".repeat(this.props.match.params.id.length)\n : this.props.match.params.id}\n

\n
\n ClipboardHelper.copy(this.props.match.params.id)}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
\n
\n
\n )}\n {!this.state.alias && (\n \n

{\n this.state.blindMode ?\n \"*\".repeat(this.props.match.params.id.length) :\n this.props.match.params.id\n }\n

\n
\n ClipboardHelper.copy(this.props.match.params.id)}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
\n
\n )}\n \n

{this.state.blindMode\n ? \"*\".repeat(this.state.address.length) : this.state.address}\n

\n {this.state.address.length > 0 && (\n
\n {\n const parts = this.state.address.split(\":\");\n if (parts.length === 2) {\n ClipboardHelper.copy(`/ip4/${parts[0]}/tcp/${parts[1]}`);\n } else {\n ClipboardHelper.copy(this.state.address);\n }\n }}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
\n )}\n
\n

\n Relation: \n {`${this.state.relation.slice(0, 1).toUpperCase()}${this.state.relation.slice(1)}`}\n

\n
\n
\n \n
\n
\n
\n\n
\n \n
\n
\n
\n );\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default withRouter(Peer);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgClose = function SvgClose(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6151 6.00057L11.6514 1.96311C11.7605 1.85778 11.8475 1.73179 11.9073 1.59248C11.9671 1.45318 11.9986 1.30335 12 1.15174C12.0013 1.00013 11.9724 0.849774 11.915 0.709449C11.8576 0.569124 11.7728 0.441638 11.6656 0.33443C11.5584 0.227222 11.4309 0.142439 11.2906 0.0850271C11.1502 0.0276156 10.9999 -0.00127433 10.8483 4.31112e-05C10.6967 0.00136056 10.5468 0.032859 10.4075 0.0927004C10.2682 0.152542 10.1422 0.239528 10.0369 0.348583L5.99943 4.3849L1.96311 0.348583C1.85778 0.239528 1.73179 0.152542 1.59248 0.0927004C1.45318 0.032859 1.30335 0.00136056 1.15174 4.31112e-05C1.00013 -0.00127433 0.849774 0.0276156 0.709449 0.0850271C0.569124 0.142439 0.441638 0.227222 0.33443 0.33443C0.227222 0.441638 0.142439 0.569124 0.0850271 0.709449C0.0276156 0.849774 -0.00127433 1.00013 4.31112e-05 1.15174C0.00136056 1.30335 0.032859 1.45318 0.0927004 1.59248C0.152542 1.73179 0.239528 1.85778 0.348583 1.96311L4.3849 5.99943L0.348583 10.0369C0.239528 10.1422 0.152542 10.2682 0.0927004 10.4075C0.032859 10.5468 0.00136056 10.6967 4.31112e-05 10.8483C-0.00127433 10.9999 0.0276156 11.1502 0.0850271 11.2906C0.142439 11.4309 0.227222 11.5584 0.33443 11.6656C0.441638 11.7728 0.569124 11.8576 0.709449 11.915C0.849774 11.9724 1.00013 12.0013 1.15174 12C1.30335 11.9986 1.45318 11.9671 1.59248 11.9073C1.73179 11.8475 1.85778 11.7605 1.96311 11.6514L5.99943 7.6151L10.0369 11.6514C10.1422 11.7605 10.2682 11.8475 10.4075 11.9073C10.5468 11.9671 10.6967 11.9986 10.8483 12C10.9999 12.0013 11.1502 11.9724 11.2906 11.915C11.4309 11.8576 11.5584 11.7728 11.6656 11.6656C11.7728 11.5584 11.8576 11.4309 11.915 11.2906C11.9724 11.1502 12.0013 10.9999 12 10.8483C11.9986 10.6967 11.9671 10.5468 11.9073 10.4075C11.8475 10.2682 11.7605 10.1422 11.6514 10.0369L7.6151 5.99943V6.00057Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgClose);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/close.3328747e4513b813fa666eafb3813ccb.svg\";","import React, { Component, ReactNode } from \"react\";\nimport \"./Dialog.scss\";\nimport { DialogProps } from \"./DialogProps\";\n\n/**\n * Component which will display a dialog.\n */\nclass Dialog extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n \n
\n
\n
\n
\n

{this.props.title}

\n
\n
\n {this.props.children}\n
\n
\n {this.props.actions}\n
\n
\n
\n \n );\n }\n}\n\nexport default Dialog;\n","import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ChevronRightIcon } from \"../../assets/chevron-right.svg\";\nimport { ReactComponent as EyeClosedIcon } from \"../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../assets/eye.svg\";\nimport { ReactComponent as HealthBadIcon } from \"../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../assets/health-good.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IPeersResponse } from \"../../models/peers/IPeersResponse\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { TangleService } from \"../../services/tangleService\";\nimport { DataHelper } from \"../../utils/dataHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Dialog from \"../components/layout/Dialog\";\nimport Graph from \"../components/layout/Graph\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Peers.scss\";\nimport { PeersState } from \"./PeersState\";\n\n/**\n * Peers panel.\n */\nclass Peers extends AsyncComponent {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer metrics subscription id.\n */\n private _peerMetricsSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n peers: [],\n dialogPeerAddress: \"\",\n dialogPeerAlias: \"\",\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._peerMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetrics,\n undefined,\n allData => {\n const peers: {\n [id: string]: {\n id: string;\n alias?: string;\n address?: string;\n originalAddress?: string;\n connected: boolean;\n relation: string;\n receivedPacketsTotal: number[];\n sentPacketsTotal: number[];\n receivedPacketsDiff: number[];\n sentPacketsDiff: number[];\n lastUpdateTime: number;\n };\n } = {};\n\n if (allData.length > 0) {\n // Only track data for the peers that appear in the most recent list.\n const finalPeerIds = new Set(allData[allData.length - 1].peers.map(p => p.id));\n\n for (const allDataPeers of allData) {\n if (allDataPeers?.peers) {\n for (const peer of allDataPeers.peers) {\n if (peer && finalPeerIds.has(peer.id)) {\n const address = DataHelper.formatPeerAddress(peer);\n if (!peers[peer.id]) {\n peers[peer.id] = {\n id: peer.id,\n address: \"\",\n connected: peer.connected,\n relation: peer.relation,\n receivedPacketsTotal: [],\n sentPacketsTotal: [],\n receivedPacketsDiff: [],\n sentPacketsDiff: [],\n lastUpdateTime: 0\n };\n }\n peers[peer.id].id = peer.id;\n peers[peer.id].alias = peer.alias;\n peers[peer.id].address = address;\n peers[peer.id].connected = peer.connected;\n peers[peer.id].relation = peer.relation;\n peers[peer.id].lastUpdateTime = Date.now();\n if (peer.multiAddresses?.length) {\n peers[peer.id].originalAddress = peer.multiAddresses[0];\n }\n\n if (peer.gossipMetrics) {\n peers[peer.id].receivedPacketsTotal.push(peer.gossipMetrics.packetsReceived);\n peers[peer.id].sentPacketsTotal.push(peer.gossipMetrics.packetsSent);\n }\n\n peers[peer.id].receivedPacketsDiff = [];\n for (let i = 1; i < peers[peer.id].receivedPacketsTotal.length; i++) {\n peers[peer.id].receivedPacketsDiff.push(\n Math.max(\n peers[peer.id].receivedPacketsTotal[i] -\n peers[peer.id].receivedPacketsTotal[i - 1]\n , 0)\n );\n }\n peers[peer.id].sentPacketsDiff = [];\n for (let i = 1; i < peers[peer.id].sentPacketsTotal.length; i++) {\n peers[peer.id].sentPacketsDiff.push(\n Math.max(\n peers[peer.id].sentPacketsTotal[i] -\n peers[peer.id].sentPacketsTotal[i - 1]\n , 0)\n );\n }\n }\n }\n }\n }\n }\n\n this.setState({\n peers: DataHelper.sortPeers(Object.values(peers))\n });\n }\n );\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._peerMetricsSubscription) {\n this._metricsService.unsubscribe(this._peerMetricsSubscription);\n this._peerMetricsSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n

Peers

\n
\n this.toggleBlindMode()}\n className=\"peers--icon-button\"\n >\n {this.state.blindMode ? : }\n \n\n this.setState({\n dialogType: \"add\",\n dialogIsEdit: true,\n dialogPeerId: \"\",\n dialogPeerAddress: \"\",\n dialogPeerAlias: \"\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Add Peer\n \n
\n
\n
\n {this.state.peers.length === 0 && (\n

There are no peers.

\n )}\n {this.state.peers.map((p, idx) => (\n
\n
\n
\n \n {p.connected ? : }\n \n
\n \n {this.state.blindMode && (\"*\".repeat((p.alias ?? p.id).length))}\n {!this.state.blindMode && (p.alias ?? p.id)}\n \n {this.state.blindMode\n ? \"*\".repeat(p.address?.length ?? 10) : p.address}\n \n
\n
\n \n
\n

\n Relation: {`${p.relation\n .slice(0, 1).toUpperCase()}${p.relation.slice(1)}`}\n

\n {p.relation !== \"known\" && p.originalAddress && (\n this.setState({\n dialogType: \"promote\",\n dialogIsEdit: true,\n dialogPeerAddress: p.originalAddress ?? \"\",\n dialogPeerAlias: \"\",\n dialogPeerId: p.id,\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Promote to Known\n \n )}\n {p.relation === \"known\" && (\n this.setState({\n dialogType: \"edit\",\n dialogIsEdit: true,\n dialogPeerAddress: p.originalAddress ?? \"\",\n dialogPeerAlias: p.alias ?? \"\",\n dialogPeerId: p.id,\n dialogPeerIdOriginal: p.id,\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Edit\n \n )}\n this.setState({\n dialogType: \"delete\",\n dialogIsEdit: false,\n dialogPeerId: p.id,\n dialogPeerAddress: \"\",\n dialogPeerAlias: \"\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Delete\n \n \n More details\n \n \n
\n
\n
\n ))}\n
\n {this.state.dialogType && (\n \n (this.state.dialogIsEdit ? this.peerConfigure() : this.peerDelete())}\n key={0}\n disabled={this.state.dialogBusy || (\n this.state.dialogIsEdit &&\n (this.state.dialogPeerAddress.trim().length === 0 ||\n this.state.dialogPeerId?.trim().length === 0)\n )}\n >\n {this.state.dialogIsEdit ? \"OK\" : \"Yes\"}\n ,\n this.setState({\n dialogPeerId: undefined,\n dialogPeerIdOriginal: undefined,\n dialogType: undefined\n })}\n key={1}\n disabled={this.state.dialogBusy}\n >\n {this.state.dialogIsEdit ? \"Cancel\" : \"No\"}\n \n ]}\n >\n {this.state.dialogType === \"delete\" && (\n

Are you sure you want to delete the peer?

\n )}\n {this.state.dialogIsEdit && (\n \n

Please enter the details of the peer to {this.state.dialogType}.

\n
\n Address\n
\n
\n this.setState({ dialogPeerAddress: e.target.value })}\n />\n
\n
\n Id\n
\n
\n this.setState({ dialogPeerId: e.target.value })}\n />\n
\n
\n Alias\n
\n
\n this.setState({ dialogPeerAlias: e.target.value })}\n />\n
\n
\n )}\n {this.state.dialogBusy && }\n

\n {this.state.dialogStatus}\n

\n \n )}\n
\n
\n );\n }\n\n /**\n * Add a new peer.\n */\n private peerConfigure(): void {\n this.setState({\n dialogBusy: true,\n dialogStatus: this.state.dialogType === \"add\"\n ? \"Adding peer, please wait...\" : \"Promoting peer, please wait...\"\n }, async () => {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n if (this.state.dialogType === \"edit\" && this.state.dialogPeerIdOriginal) {\n await tangleService.peerDelete(this.state.dialogPeerIdOriginal);\n }\n let addr = this.state.dialogPeerAddress;\n if (!addr.endsWith(\"/\")) {\n addr += \"/\";\n }\n addr += `p2p/${this.state.dialogPeerId}`;\n await tangleService.peerAdd(addr, this.state.dialogPeerAlias);\n\n this.setState({\n dialogBusy: false,\n dialogStatus: \"\",\n dialogPeerId: undefined,\n dialogType: undefined\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to ${this.state.dialogType} peer: ${error.message}`\n });\n }\n }\n });\n }\n\n /**\n * Delete the specified peer.\n */\n private peerDelete(): void {\n this.setState({\n dialogBusy: true,\n dialogStatus: \"Deleting peer, please wait...\"\n }, async () => {\n if (this.state.dialogPeerId) {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n await tangleService.peerDelete(this.state.dialogPeerId);\n\n this.setState({\n dialogBusy: false,\n dialogStatus: \"\",\n dialogPeerId: undefined,\n dialogType: undefined\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to delete peer: ${error.message}`\n });\n }\n }\n }\n });\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default withRouter(Peers);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPause = function SvgPause(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 3H8C8.53043 3 9.03914 3.21071 9.41421 3.58579C9.78929 3.96086 10 4.46957 10 5V19C10 19.5304 9.78929 20.0391 9.41421 20.4142C9.03914 20.7893 8.53043 21 8 21H6C5.46957 21 4.96086 20.7893 4.58579 20.4142C4.21071 20.0391 4 19.5304 4 19V5C4 4.46957 4.21071 3.96086 4.58579 3.58579C4.96086 3.21071 5.46957 3 6 3V3ZM6 5V19H8V5H6ZM16 3H18C18.5304 3 19.0391 3.21071 19.4142 3.58579C19.7893 3.96086 20 4.46957 20 5V19C20 19.5304 19.7893 20.0391 19.4142 20.4142C19.0391 20.7893 18.5304 21 18 21H16C15.4696 21 14.9609 20.7893 14.5858 20.4142C14.2107 20.0391 14 19.5304 14 19V5C14 4.46957 14.2107 3.96086 14.5858 3.58579C14.9609 3.21071 15.4696 3 16 3V3ZM16 5V19H18V5H16Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPause);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/pause.8f183526ee54e218ab2d12b2e7dbea15.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPlay = function SvgPlay(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.78205 4.3598L19.2432 11.5176L7.92341 18.8969L7.78205 4.3598Z\",\n stroke: \"#9AADCE\",\n strokeWidth: 2,\n strokeLinejoin: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPlay);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/play.0cc752a2907c29ea69983a2ce4c35c3d.svg\";","import { Converter } from \"@iota/util.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport Viva from \"vivagraphjs\";\nimport { ReactComponent as CloseIcon } from \"../../assets/close.svg\";\nimport { ReactComponent as PauseIcon } from \"../../assets/pause.svg\";\nimport { ReactComponent as PlayIcon } from \"../../assets/play.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { BLOCK_BODY_TYPE_BASIC, BLOCK_BODY_TYPE_VALIDATION } from \"../../models/tangle/blockBodyTypes\";\nimport { PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT, PAYLOAD_TYPE_SIGNED_TRANSACTION, PAYLOAD_TYPE_TAGGED_DATA } from \"../../models/tangle/payloadTypes\";\nimport { IVertex } from \"../../models/visualizer/IVertex\";\nimport { IGossipMetrics } from \"../../models/websocket/IGossipMetrics\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { DashboardConfigService } from \"../../services/dashboardConfigService\";\nimport { EventAggregator } from \"../../services/eventAggregator\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { TangleService } from \"../../services/tangleService\";\nimport { ThemeService } from \"../../services/themeService\";\nimport { VisualizerService } from \"../../services/visualizerService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport \"./Visualizer.scss\";\nimport { VisualizerState } from \"./VisualizerState\";\n\n\n/**\n * Visualizer panel.\n */\nclass Visualizer extends AsyncComponent {\n /**\n * Map the vetex states to colors.\n */\n private static readonly STATE_COLOR_MAP: { [id: string]: number } = {\n unknown: 0x9AADCEFF,\n pending: 0xECDF1EFF,\n accepted: 0x8FE6FAFF,\n confirmed: 0x2260E7FF,\n finalized: 0x61E884FF,\n transaction: 0xC061E8FF,\n validation: 0xD92121FF,\n tip: 0xFF8B5CFF\n };\n\n private static readonly BLOCK_STATE_TITLE_MAP: { [id: string]: string } = {\n unknown: \"Unknown\",\n pending: \"Pending\",\n accepted: \"Accepted\",\n confirmed: \"Confirmed\",\n finalized: \"Finalized\"\n };\n\n /**\n * Color for connection between vertices.\n */\n private static readonly THEME_COLOR_LINKS: { [theme: string]: number } = {\n dark: 0xFFFFFF22,\n light: 0xDDDDDDFF\n };\n\n /**\n * Children link color.\n */\n private static readonly COLOR_LINK_CHILDREN = 0xFF5AAAFF;\n\n /**\n * Parent link color.\n */\n private static readonly COLOR_LINK_PARENTS = 0x0000FFFF;\n\n /**\n * The graph element.\n */\n private _graphElement: HTMLElement | null;\n\n /**\n * The graph instance.\n */\n private _graph?: Viva.Graph.IGraph;\n\n /**\n * The renderer instance.\n */\n private _renderer?: Viva.Graph.View.IRenderer;\n\n /**\n * The graphics instance.\n */\n private _graphics?: Viva.Graph.View.IWebGLGraphics;\n\n /**\n * The visualizer service.\n */\n private readonly _vizualizerService: VisualizerService;\n\n /**\n * The dashboard config service.\n */\n private readonly _dashboardConfigService: DashboardConfigService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The tangle service.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The gossip metrics subscription id.\n */\n private _gossipMetricsSubscription?: string;\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Entered vertex.\n */\n private _enteredVertexId?: string;\n\n /**\n * Create a new instance of Visualizer.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._graphElement = null;\n this._resize = () => this.resize();\n this._vizualizerService = ServiceFactory.get(\"visualizer\");\n this._dashboardConfigService = ServiceFactory.get(\"dashboard-config\");\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._tangleService = ServiceFactory.get(\"tangle\");\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n bps: \"-\",\n total: \"-\",\n tips: \"-\",\n accepted: \"-\",\n confirmed: \"-\",\n finalized: \"-\",\n transactions: \"-\",\n isActive: true,\n theme: this._themeService.get()\n };\n }\n\n /**\n * The component will mount.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n window.addEventListener(\"resize\", this._resize);\n\n this._vizualizerService.subscribe(\n (vertex, op) => {\n if (op === \"add\" || op === \"update\") {\n this.updateVertex(vertex);\n } else if (op === \"delete\") {\n this.deleteVertex(vertex);\n }\n },\n counts => {\n if (this.state.isActive) {\n this.setState({\n total: counts.total.toString(),\n tips: counts.tips.toString(),\n accepted: counts.total > 0\n ? `${(counts.accepted / counts.total * 100).toFixed(2)}%`\n : \"-\",\n confirmed: counts.total > 0\n ? `${(counts.confirmed / counts.total * 100).toFixed(2)}%`\n : \"-\",\n finalized: counts.total > 0\n ? `${(counts.finalized / counts.total * 100).toFixed(2)}%`\n : \"-\",\n transactions: counts.total > 0\n ? `${(counts.transactions / counts.total * 100).toFixed(2)}%`\n : \"-\"\n });\n }\n }\n );\n\n this._gossipMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.GossipMetrics, data => {\n if (data && this.state.isActive) {\n this.setState({ bps: data.new.toString() });\n }\n });\n\n EventAggregator.subscribe(\"theme\", \"visualizer\", theme => {\n this.setState({\n theme\n }, () => this.styleAllLinks());\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._gossipMetricsSubscription) {\n this._metricsService.unsubscribe(this._gossipMetricsSubscription);\n this._gossipMetricsSubscription = undefined;\n }\n\n this._vizualizerService.unsubscribe();\n\n EventAggregator.unsubscribe(\"theme\", \"visualizer\");\n\n // This is a workaround for an issue in Safari\n // https://github.com/WebKit/WebKit/pull/1693\n // https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n if (this._graphElement) {\n const canvas = this._graphElement.children[0] as HTMLCanvasElement;\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n ctx?.clearRect(0, 0, 1, 1);\n }\n\n this._graph?.clear();\n this._renderer?.dispose();\n\n this._graph = undefined;\n this._graphics = undefined;\n this._renderer = undefined;\n this._graphElement = null;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.setupGraph(r)}\n />\n
\n
\n this.toggleActivity()}\n >\n {this.state.isActive ? : }\n \n
\n
\n
\n
\n
\n Blocks\n
\n
\n {this.state.total}\n
\n
\n BPS\n
\n
\n {this.state.bps}\n
\n
\n Tips\n
\n
\n {this.state.tips}\n
\n
\n Accepted\n
\n
\n {this.state.accepted}\n
\n
\n Confirmed\n
\n
\n {this.state.confirmed}\n
\n
\n Finalized\n
\n
\n {this.state.finalized}\n
\n
\n Transactions\n
\n
\n {this.state.transactions}\n
\n
\n
\n
\n
\n
\n
\n
Pending
\n
\n
\n
\n
Accepted
\n
\n
\n
\n
Confirmed
\n
\n
\n
\n
Finalized
\n
\n
\n
\n
Transaction
\n
\n
\n
\n
Validation
\n
\n
\n
\n
Tip
\n
\n
\n
\n
Unknown
\n
\n
\n
\n {this.state.selected && this._graphElement && (\n \n
\n
\n
\n
\n

{this.state.selected.blockStateTitle}{this.state.selected.payloadTitle}

\n
\n this.selectNode()}\n >\n \n \n
\n
\n {this.state.selected.vertex.fullId && (\n \n
\n Block Id\n
\n
\n {\n this.calculateBlockLink(this.state.selected.vertex) === \"\"\n ?
{this.state.selected.vertex.fullId}
\n :\n \n {this.state.selected.vertex.fullId}\n \n }\n
\n
\n )}\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_BASIC &&\n this.state.selected.block.body.payload?.type === PAYLOAD_TYPE_TAGGED_DATA && (\n \n
\n Tag UTF8\n
\n
\n {Converter.hexToUtf8(this.state.selected.block?.body.payload.tag)}\n
\n
\n Tag Hex\n
\n
\n {this.state.selected.block?.body.payload.tag}\n
\n
\n )}\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_BASIC &&\n this.state.selected.block.body.payload?.type === PAYLOAD_TYPE_SIGNED_TRANSACTION && (\n
\n )}\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_BASIC &&\n this.state.selected.block.body.payload?.type === PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT && (\n \n
\n Candidate\n
\n
\n {this.state.selected.block?.header.issuerId}\n
\n
\n )}\n\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_VALIDATION &&\n \n
\n Validator\n
\n
\n {this.state.selected.block?.header.issuerId}\n
\n
\n Highest Supported Version\n
\n
\n {this.state.selected.block?.body.highestSupportedVersion}\n
\n
\n Protocol Parameters Hash\n
\n
\n {this.state.selected.block?.body.protocolParametersHash}\n
\n
}\n
\n
\n
\n )}\n
\n );\n }\n\n /**\n * Setup the graph.\n * @param graphElement The element to use.\n */\n private setupGraph(graphElement: HTMLElement | null): void {\n this._graphElement = graphElement;\n\n if (graphElement && !this._graph) {\n this._graph = Viva.Graph.graph();\n\n this._graphics = Viva.Graph.View.webglGraphics();\n\n const layout = Viva.Graph.Layout.forceDirected(this._graph, {\n springLength: 10,\n springCoeff: 0.0001,\n stableThreshold: 0.15,\n gravity: -2,\n dragCoeff: 0.02,\n timeStep: 20,\n theta: 0.8\n });\n\n this._graphics.node(node => Viva.Graph.View.webglSquare(\n this.calculateSize(node.data),\n `#${Visualizer.STATE_COLOR_MAP[this.calculateVertexState(node.data)].toString(16)}`\n ));\n\n this._graphics.link(() => Viva.Graph.View.webglLine(\n `#${Visualizer.THEME_COLOR_LINKS[this.state.theme].toString(16)}`));\n\n this._renderer = Viva.Graph.View.renderer(this._graph, {\n container: graphElement,\n graphics: this._graphics,\n layout,\n renderLinks: true\n });\n\n const events = Viva.Graph.webglInputEvents(this._graphics, this._graph);\n\n events.click(node => this.selectNode(node));\n events.dblClick(node => {\n this.selectNode();\n window.open(\n this.calculateBlockLink(node.data),\n \"_blank\"\n );\n });\n\n events.mouseEnter(node => {\n if (!this.state.selected) {\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n if (node) {\n this._enteredVertexId = node.data?.shortId ?? node.id.slice(0, 10);\n this.connectedLinkStyle(this._enteredVertexId, true);\n }\n }\n });\n\n events.mouseLeave(node => {\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n });\n\n this._renderer.run();\n\n this._graphics.scale(1, { x: graphElement.clientWidth / 2, y: graphElement.clientHeight / 2 });\n\n for (let i = 0; i < 12; i++) {\n this._renderer.zoomOut();\n }\n }\n }\n\n /**\n * Draw a vertex.\n * @param vertex The vertex to draw.\n */\n private updateVertex(vertex: IVertex): void {\n if (this._graph) {\n let node = this.updateNodeUI(vertex.shortId);\n if (!node) {\n node = this._graph.addNode(vertex.shortId, vertex);\n }\n if (vertex.parents) {\n const added: string[] = [];\n for (let i = 0; i < vertex.parents.length; i++) {\n const parent = vertex.parents[i];\n if (!added.includes(parent) &&\n (!node.links?.some(link => link.toId === parent))) {\n added.push(parent);\n this._graph.addLink(vertex.shortId, parent);\n }\n }\n }\n }\n }\n\n /**\n * Update node style.\n * @param id The node id.\n * @returns The updated node.\n */\n private updateNodeUI(id: string): Viva.Graph.INode | undefined {\n if (this._graphics && this._graph) {\n const node = this._graph?.getNode(id);\n\n if (node) {\n const nodeUI = this._graphics.getNodeUI(id);\n if (nodeUI) {\n nodeUI.color = Visualizer.STATE_COLOR_MAP[this.calculateVertexState(node.data)];\n nodeUI.size = this.calculateSize(node.data);\n }\n }\n\n return node;\n }\n }\n\n /**\n * Calculate the state for the vertex.\n * @param vertex The vertex to calculate the state for.\n * @returns The state.\n */\n private calculateVertexState(vertex?: IVertex): string {\n if (!vertex?.parents) {\n return \"unknown\";\n }\n\n if (vertex.isValidationBlock) {\n return \"validation\";\n }\n\n if (vertex.isTip) {\n return \"tip\";\n }\n\n if (vertex.isFinalized || vertex.isConfirmed) {\n if (vertex.isBasicBlockSignedTransaction) {\n return \"transaction\";\n }\n\n if (vertex.isFinalized) {\n return \"finalized\";\n }\n\n return \"confirmed\";\n }\n\n if (vertex.isAccepted) {\n return \"accepted\";\n }\n\n return \"pending\";\n }\n\n /**\n * Calculate the state for the block.\n * @param vertex The vertex to calculate the state for.\n * @returns The block state.\n */\n private calculateBlockState(vertex?: IVertex): string {\n if (!vertex?.parents) {\n return \"unknown\";\n }\n\n if (vertex.isFinalized || vertex.isConfirmed) {\n if (vertex.isFinalized) {\n return \"finalized\";\n }\n\n return \"confirmed\";\n }\n\n if (vertex.isAccepted) {\n return \"accepted\";\n }\n\n return \"pending\";\n }\n\n /**\n * Calulate the size for the vertex.\n * @param vertex The vertex to calculate the size for.\n * @returns The size.\n */\n private calculateSize(vertex?: IVertex): number {\n if (!vertex?.parents) {\n return 10;\n }\n if (vertex.isSelected) {\n return 30;\n }\n return 20;\n }\n\n /**\n * Delete a vertex.\n * @param vertex The vertex to delete.\n */\n private deleteVertex(vertex: IVertex): void {\n if (this._graph) {\n this._graph.removeNode(vertex.shortId);\n\n if (this.state.selected &&\n this.state.selected.vertex.shortId === vertex.shortId) {\n this.setState({ selected: undefined });\n this.connectedLinkStyle(this.state.selected.vertex.shortId, false);\n }\n\n if (this._enteredVertexId &&\n this._enteredVertexId === vertex.shortId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n }\n }\n\n /**\n * Walk the graph.\n * @param startNode The node to start with.\n * @param nodeCallback The iterator method to call on each node.\n * @param linkCallback The iterator method to call on each link.\n * @param up Are we walking up or down.\n * @param seenNodes The nodes we have already seen.\n */\n private dfsIterator(\n startNode: Viva.Graph.INode,\n nodeCallback: ((nodeId: string) => boolean) | undefined,\n linkCallback: ((linkId: string) => void) | undefined,\n up: boolean,\n seenNodes: Viva.Graph.INode[]): void {\n if (this._graph) {\n seenNodes.push(startNode);\n let pointer = 0;\n\n while (seenNodes.length > pointer) {\n const node = seenNodes[pointer++];\n const nodeId = node.data?.shortId ?? node.id.slice(0, 10);\n\n if (nodeCallback?.(nodeId)) {\n continue;\n }\n\n for (const link of node.links) {\n if (!up && link.fromId === nodeId) {\n if (linkCallback) {\n linkCallback(link.id);\n }\n const linkNode = this._graph.getNode(link.toId);\n if (linkNode && !seenNodes.includes(linkNode)) {\n seenNodes.push(linkNode);\n }\n }\n\n if (up && link.toId === nodeId) {\n if (linkCallback) {\n linkCallback(link.id);\n }\n const linkNode = this._graph.getNode(link.fromId);\n if (linkNode && !seenNodes.includes(linkNode)) {\n seenNodes.push(linkNode);\n }\n }\n }\n }\n }\n }\n\n /**\n * The window was resized.\n */\n private resize(): void {\n if (this._graphics && this._graphElement) {\n this._graphics.updateSize();\n this._graphics.scale(1, {\n x: this._graphElement.clientWidth / 2,\n y: this._graphElement.clientHeight / 2\n });\n }\n }\n\n /**\n * Toggle if the visualizer is active.\n */\n private toggleActivity(): void {\n if (this._renderer) {\n if (this.state.isActive) {\n this._renderer.pause();\n } else {\n this._renderer.resume();\n }\n }\n\n this.setState({ isActive: !this.state.isActive });\n }\n\n /**\n * Select a node.\n * @param node The node to select\n */\n private selectNode(node?: Viva.Graph.INode): void {\n if (this.state.selected) {\n this.state.selected.vertex.isSelected = false;\n this.updateNodeUI(this.state.selected.vertex.shortId);\n this.connectedLinkStyle(this.state.selected.vertex.shortId, false);\n }\n\n if (node) {\n if (!node.data) {\n node.data = {\n shortId: node.id\n };\n }\n node.data.isSelected = true;\n this.updateNodeUI(node.id);\n\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n this.connectedLinkStyle(node.data.shortId, true);\n\n this.setState({\n selected: {\n vertex: node?.data,\n vertexState: this.calculateVertexState(node.data),\n blockStateTitle: Visualizer.BLOCK_STATE_TITLE_MAP[this.calculateBlockState(node.data)]\n }\n },\n async () => {\n if (node.data?.fullId) {\n const block = await this._tangleService.block(node.data.fullId);\n let payloadTitle = \" - Unknown\";\n\n if (block?.body) {\n switch (block?.body.type) {\n case BLOCK_BODY_TYPE_BASIC:\n switch (block?.body.payload?.type) {\n case PAYLOAD_TYPE_TAGGED_DATA:\n payloadTitle = \" - Tagged data\";\n break;\n case PAYLOAD_TYPE_SIGNED_TRANSACTION:\n payloadTitle = \" - Signed transaction\";\n break;\n case PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT:\n payloadTitle = \" - Candidacy announcement\";\n break;\n default:\n break;\n }\n break;\n case BLOCK_BODY_TYPE_VALIDATION:\n payloadTitle = \" - Validation block\";\n break;\n default:\n break;\n }\n }\n\n this.setState({\n selected: {\n vertex: node?.data,\n vertexState: this.calculateVertexState(node.data),\n blockStateTitle: Visualizer.BLOCK_STATE_TITLE_MAP[this.calculateBlockState(node.data)],\n block,\n payloadTitle\n }\n });\n }\n });\n } else {\n this.setState({ selected: undefined });\n }\n }\n\n /**\n * Calculate the link for the block.\n * @param vertex The vertex id.\n * @returns The url for the block.\n */\n private calculateBlockLink(vertex?: IVertex): string {\n const explorerURL = this._dashboardConfigService.getExplorerURL();\n if (explorerURL === \"\" || !vertex?.fullId) {\n return \"\";\n }\n\n return `${explorerURL}/block/${vertex.fullId}`;\n }\n\n /**\n * Highlight the forward and backwards cones.\n * @param vertexId The node to highlight.\n * @param highlight Highlight or clear the coloring.\n */\n private connectedLinkStyle(vertexId: string, highlight: boolean): void {\n if (this._graph) {\n const startNode = this._graph.getNode(vertexId);\n\n if (startNode) {\n const seenForward: Viva.Graph.INode[] = [];\n const seenBackwards: Viva.Graph.INode[] = [];\n\n this.dfsIterator(\n startNode,\n undefined,\n linkId => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(linkId);\n if (linkUI) {\n linkUI.color = highlight\n ? Visualizer.COLOR_LINK_CHILDREN : Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n },\n true,\n seenBackwards\n );\n this.dfsIterator(\n startNode,\n undefined,\n linkId => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(linkId);\n if (linkUI) {\n linkUI.color = highlight\n ? Visualizer.COLOR_LINK_PARENTS : Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n },\n false,\n seenForward\n );\n }\n }\n }\n\n /**\n * Style all the links.\n */\n private styleAllLinks(): void {\n if (this._graph && this._graphics) {\n this._graph.forEachLink(link => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(link.id);\n if (linkUI) {\n linkUI.color = Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n });\n }\n }\n}\n\nexport default Visualizer;\n","import { IBlockBodyBasic } from \"./IBlockBodyBasic\";\nimport { IBlockBodyValidation } from \"./IBlockBodyValidation\";\n\n/**\n * The global types for the block bodies.\n */\nexport const BLOCK_BODY_TYPE_BASIC = 0;\nexport const BLOCK_BODY_TYPE_VALIDATION = 1;\n\n/**\n * All of the block body types.\n */\nexport declare type BlockBodyTypes = IBlockBodyBasic | IBlockBodyValidation;\n","import { IPayloadCandidacyAnnouncement } from \"./IPayloadCandidacyAnnouncement\";\nimport type { IPayloadSignedTransaction } from \"./IPayloadSignedTransaction\";\nimport type { IPayloadTaggedData } from \"./IPayloadTaggedData\";\n\n/**\n * The global types for the payloads.\n */\nexport const PAYLOAD_TYPE_TAGGED_DATA = 0;\nexport const PAYLOAD_TYPE_SIGNED_TRANSACTION = 1;\nexport const PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT = 2;\n\n/**\n * All of the payload types.\n */\nexport declare type PayloadTypes = IPayloadTaggedData | IPayloadSignedTransaction | IPayloadCandidacyAnnouncement;\n","import moment from \"moment\";\nimport React, { ReactNode } from \"react\";\nimport { Redirect, Route, RouteComponentProps, Switch, withRouter } from \"react-router-dom\";\nimport { ReactComponent as HomeIcon } from \"../assets/home.svg\";\nimport { ReactComponent as MoonIcon } from \"../assets/moon.svg\";\nimport { ReactComponent as PadlockUnlockedIcon } from \"../assets/padlock-unlocked.svg\";\nimport { ReactComponent as PadlockIcon } from \"../assets/padlock.svg\";\nimport { ReactComponent as PeersIcon } from \"../assets/peers.svg\";\nimport { ReactComponent as SunIcon } from \"../assets/sun.svg\";\nimport { ReactComponent as VisualizerIcon } from \"../assets/visualizer.svg\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { INodeInfoExtended } from \"../models/websocket/INodeInfoExtended\";\nimport { IPublicNodeStatus } from \"../models/websocket/IPublicNodeStatus\";\nimport { ISyncStatus } from \"../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { AuthService } from \"../services/authService\";\nimport { DashboardConfigService } from \"../services/dashboardConfigService\";\nimport { EventAggregator } from \"../services/eventAggregator\";\nimport { LocalStorageService } from \"../services/localStorageService\";\nimport { MetricsService } from \"../services/metricsService\";\nimport { ThemeService } from \"../services/themeService\";\nimport { BrandHelper } from \"../utils/brandHelper\";\nimport \"./App.scss\";\nimport { AppState } from \"./AppState\";\nimport AsyncComponent from \"./components/layout/AsyncComponent\";\nimport Breakpoint from \"./components/layout/Breakpoint\";\nimport Header from \"./components/layout/Header\";\nimport HealthIndicator from \"./components/layout/HealthIndicator\";\nimport NavMenu from \"./components/layout/NavMenu\";\nimport NavPanel from \"./components/layout/NavPanel\";\nimport Home from \"./routes/Home\";\nimport Login from \"./routes/Login\";\nimport Peer from \"./routes/Peer\";\nimport { PeerRouteProps } from \"./routes/PeerRouteProps\";\nimport Peers from \"./routes/Peers\";\nimport Visualizer from \"./routes/Visualizer\";\n\n/**\n * Main application class.\n */\nclass App extends AsyncComponent {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * The storage service.\n */\n private readonly _storageService: LocalStorageService;\n\n /**\n * The dashboard config service.\n */\n private readonly _dashboardConfigService: DashboardConfigService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The node info extended subscription id.\n */\n private _nodeInfoExtendedSubscription?: string;\n\n /**\n * The sync status metrics subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * The node alias.\n */\n private _alias?: string;\n\n /**\n * The lastest committed slot.\n */\n private _latestCommitmentSlot?: string;\n\n /**\n * The latest finalized slot.\n */\n private _latestFinalizedSlot?: string;\n\n /**\n * The time of the last status update.\n */\n private _lastStatus: number;\n\n /**\n * The status timer.\n */\n private _statusTimer?: NodeJS.Timer;\n\n /**\n * The token expiry timer.\n */\n private _tokenExpiryTimer?: NodeJS.Timer;\n\n /**\n * Create a new instance of App.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n this._themeService = ServiceFactory.get(\"theme\");\n this._authService = ServiceFactory.get(\"auth\");\n this._dashboardConfigService = ServiceFactory.get(\"dashboard-config\");\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._storageService = ServiceFactory.get(\"local-storage\");\n\n this._lastStatus = 0;\n\n this.state = {\n isLoggedIn: Boolean(this._authService.isLoggedIn()),\n theme: this._themeService.get(),\n online: false,\n isNetworkHealthy: false,\n isNodeHealthy: false\n };\n\n this.updateTitle();\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n EventAggregator.subscribe(\"auth-state\", \"app\", isLoggedIn => {\n this.setState({\n isLoggedIn\n }, () => {\n if (this.state.isLoggedIn) {\n this.validateTokenPeriodically();\n }\n });\n });\n\n EventAggregator.subscribe(\"theme\", \"app\", theme => {\n this.setState({ theme });\n });\n\n this._nodeInfoExtendedSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeInfoExtended,\n data => {\n if (data && data.nodeAlias !== this._alias) {\n this._alias = data.nodeAlias;\n this.updateTitle();\n }\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const latestCommitmentSlot = data.latestCommitmentSlot ? data.latestCommitmentSlot.toString() : \"\";\n const latestFinalizedSlot = data.latestFinalizedSlot ? data.latestFinalizedSlot.toString() : \"\";\n\n if (latestCommitmentSlot !== this._latestCommitmentSlot || latestFinalizedSlot !== this._latestFinalizedSlot) {\n this._latestCommitmentSlot = latestCommitmentSlot;\n this._latestFinalizedSlot = latestFinalizedSlot;\n this.updateTitle();\n }\n }\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n this._lastStatus = Date.now();\n if (!this.state.online) {\n EventAggregator.publish(\"online\", true);\n this.setState({\n online: true\n });\n }\n if (data.isNodeHealthy !== this.state.isNodeHealthy) {\n this.setState({ isNodeHealthy: data.isNodeHealthy });\n }\n if (data.isNetworkHealthy !== this.state.isNetworkHealthy) {\n this.setState({ isNetworkHealthy: data.isNetworkHealthy });\n }\n }\n });\n\n this._statusTimer = setInterval(() => {\n if (Date.now() - this._lastStatus > 30000 && this.state.online) {\n this.setState({\n online: false\n });\n\n EventAggregator.publish(\"online\", false);\n }\n }, 1000);\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"auth-state\", \"app\");\n EventAggregator.unsubscribe(\"theme\", \"app\");\n\n if (this._nodeInfoExtendedSubscription) {\n this._metricsService.unsubscribe(this._nodeInfoExtendedSubscription);\n this._nodeInfoExtendedSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._statusTimer !== undefined) {\n clearInterval(this._statusTimer);\n this._statusTimer = undefined;\n }\n\n this.clearTokenExpiryInterval();\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n const sections = [\n {\n label: \"Home\",\n icon: ,\n route: \"/\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Peers\",\n icon: ,\n route: \"/peers\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Visualizer\",\n icon: ,\n route: \"/visualizer\"\n },\n {\n label: \"Login\",\n icon: ,\n route: \"/login\",\n hidden: this.state.isLoggedIn\n },\n {\n label: \"Logout\",\n icon: ,\n function: () => this._authService.logout(),\n hidden: !this.state.isLoggedIn\n }\n ];\n\n const endSections = [\n {\n label: \"Light\",\n icon: ,\n function: () => this._themeService.apply(\"light\", true),\n hidden: this.state.theme === \"light\"\n },\n {\n label: \"Dark\",\n icon: ,\n function: () => this._themeService.apply(\"dark\", true),\n hidden: this.state.theme === \"dark\"\n }\n ];\n\n return (\n
\n \n \n \n
\n
\n \n \n \n \n \n
\n
\n {!this.state.online && (\n

The node is offline or loading.

\n )}\n {this.state.online && (\n \n \n
\n \n \n
\n
\n \n {this.state.isLoggedIn && [\n ()}\n key=\"home\"\n />,\n ()}\n key=\"peers\"\n />,\n ) =>\n ()}\n key=\"peer\"\n />\n ]}\n {!this.state.isLoggedIn && (\n ()}\n />\n )}\n ()}\n />\n ()}\n />\n ()}\n />\n \n
\n )}\n
\n
\n
\n );\n }\n\n /**\n * Update the window title.\n */\n private updateTitle(): void {\n let title = BrandHelper.getConfiguration().name;\n\n if (this._alias) {\n title += ` (${this._alias})`;\n }\n if (this._latestCommitmentSlot && this._latestFinalizedSlot) {\n title += ` ${this._latestFinalizedSlot} / ${this._latestCommitmentSlot}`;\n }\n\n document.title = title;\n }\n\n /**\n * Refresh the token one minute before it expires.\n */\n private validateTokenPeriodically() {\n this.clearTokenExpiryInterval();\n const jwt = this._storageService.load(\"dashboard-jwt\");\n const expiryTimestamp = this.getTokenExpiry(jwt);\n const expiryDate = moment(expiryTimestamp);\n const refreshTokenDate = moment(expiryDate).subtract(1, \"minutes\");\n\n this._tokenExpiryTimer = setInterval(async () => {\n const now = moment();\n if (now.isAfter(expiryDate)) {\n this._authService.logout();\n this.clearTokenExpiryInterval();\n } else if (now.isBetween(refreshTokenDate, expiryDate)) {\n await this._authService.initialize();\n }\n }, 5000);\n }\n\n /**\n * Decode jwt to get expiry time.\n * @param token The jwt.\n * @returns The expiry time.\n */\n private getTokenExpiry(token: string) {\n const payload = token.split(\".\")[1];\n const decodedToken = window.atob(payload);\n const parsedToken = JSON.parse(decodedToken);\n const expiryTimestamp = parsedToken.exp * 1000;\n\n return expiryTimestamp;\n }\n\n /**\n * Clear token expiry interval.\n */\n private clearTokenExpiryInterval() {\n if (this._tokenExpiryTimer !== undefined) {\n clearInterval(this._tokenExpiryTimer);\n this._tokenExpiryTimer = undefined;\n }\n }\n}\n\nexport default withRouter(App);\n","/**\n * Fetch from an endpoint.\n */\nexport class FetchHelper {\n /**\n * Fetch a payload from an endpoint.\n * @param baseUrl The base url for the api.\n * @param path The path for the endpoint.\n * @param method The method to send the request with.\n * @param payload The payload to send.\n * @param headers The headers to include in the fetch.\n * @param timeout Timeout for the request.\n * @returns The fetched payload and any cookies.\n */\n public static async json(\n baseUrl: string,\n path: string,\n method: \"get\" | \"post\" | \"put\" | \"delete\",\n payload?: T,\n headers?: { [id: string]: string },\n timeout?: number\n ): Promise {\n headers ??= {};\n headers[\"Content-Type\"] = \"application/json\";\n\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(\n () => {\n if (controller) {\n controller.abort();\n }\n },\n timeout);\n }\n\n try {\n const res = await fetch(\n `${baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`,\n {\n method,\n headers,\n body: payload ? JSON.stringify(payload) : undefined,\n signal: controller ? controller.signal : undefined\n });\n\n const json = (res.status === 204) ? {}\n : await res.json()\n .catch(error => {\n throw new Error(`Fetched failed: ${error.message}`);\n });\n\n return json as U;\n } catch (err) {\n if (err instanceof Error) {\n throw err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } else {\n throw err;\n }\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Fetch a payload from an endpoint.\n * @param baseUrl The base url for the api.\n * @param path The path for the endpoint.\n * @param method The method to send the request with.\n * @param payload The payload to send.\n * @param headers The headers to include in the fetch.\n * @param timeout Timeout for the request.\n * @returns The fetched payload and any cookies.\n */\n public static async text(\n baseUrl: string,\n path: string,\n method: \"get\" | \"post\" | \"put\" | \"delete\",\n payload?: T,\n headers?: { [id: string]: string },\n timeout?: number\n ): Promise {\n headers ??= {};\n headers[\"Content-Type\"] = \"text/plain\";\n\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(\n () => {\n if (controller) {\n controller.abort();\n }\n },\n timeout);\n }\n\n try {\n const res = await fetch(\n `${baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`,\n {\n method,\n headers,\n body: payload ? JSON.stringify(payload) : undefined,\n signal: controller ? controller.signal : undefined\n });\n const json = (res.status === 204) ? {}\n : await res.json()\n .catch(error => {\n throw new Error(`Fetched failed: ${res.statusText}`);\n });\n\n return json as U;\n } catch (err) {\n if (err instanceof Error) {\n throw err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } else {\n throw err;\n }\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Join params onto command.\n * @param params The params to add.\n * @returns The joined parameters.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static urlParams(params: { [id: string]: any }): string {\n const urlParams = [];\n for (const key in params) {\n if (params[key] !== null && params[key] !== undefined) {\n urlParams.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key] as string)}`);\n }\n }\n return urlParams.length > 0 ? `?${urlParams.join(\"&\")}` : \"\";\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { FetchHelper } from \"../utils/fetchHelper\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Service to handle authentication.\n */\nexport class AuthService {\n /**\n * The jwt if authenticated.\n */\n private _jwt?: string;\n\n /**\n * The csrf cookie from the login operation.\n */\n private readonly _csrf?: string;\n\n /**\n * Create a new instance of AuthService.\n */\n constructor() {\n this._jwt = undefined;\n\n if (document.cookie) {\n const cookies = document.cookie.split(\";\");\n\n const csrf = cookies.find(c => c.trim().startsWith(\"_csrf\"));\n\n if (csrf) {\n const parts = csrf.split(\"=\");\n if (parts.length === 2) {\n this._csrf = parts[1];\n }\n }\n }\n }\n\n /**\n * Initialise service.\n */\n public async initialize(): Promise {\n const storageService = ServiceFactory.get(\"local-storage\");\n\n const jwt = storageService.load(\"dashboard-jwt\");\n\n if (jwt) {\n await this.login(undefined, undefined, jwt);\n }\n }\n\n /**\n * Try performing a login.\n * @param user The username to login with.\n * @param password The password to login with.\n * @param jwt The jwt to login with.\n * @returns True if the login was successful.\n */\n public async login(\n user: string | undefined,\n password: string | undefined,\n jwt?: string): Promise {\n this.logout();\n\n try {\n const headers: Record = {};\n if (this._csrf) {\n headers[\"X-CSRF-Token\"] = this._csrf;\n }\n\n const response = await FetchHelper.json<{\n user?: string;\n password?: string;\n jwt?: string;\n }, {\n jwt?: string;\n }>(\n `${window.location.protocol}//${window.location.host}`,\n \"/dashboard/auth\",\n \"post\",\n {\n user,\n password,\n jwt\n },\n headers);\n\n if (response.jwt) {\n const storageService = ServiceFactory.get(\"local-storage\");\n this._jwt = response.jwt;\n storageService.save(\"dashboard-jwt\", this._jwt);\n EventAggregator.publish(\"auth-state\", true);\n }\n } catch (err) {\n console.error(err);\n }\n\n return this._jwt !== undefined;\n }\n\n /**\n * Logout.\n */\n public logout(): void {\n if (this._jwt) {\n const storageService = ServiceFactory.get(\"local-storage\");\n storageService.remove(\"dashboard-jwt\");\n this._jwt = undefined;\n EventAggregator.publish(\"auth-state\", false);\n }\n }\n\n /**\n * Get the jwt.\n * @returns The jwt if logged in.\n */\n public isLoggedIn(): string | undefined {\n return this._jwt;\n }\n\n /**\n * Get the csrf.\n * @returns The csrf.\n */\n public csrf(): string | undefined {\n return this._csrf;\n }\n\n /**\n * Build authentication headers.\n * @returns The authentication headers.\n */\n public buildAuthHeaders(): Record {\n const headers: Record = {};\n const jwt = this.isLoggedIn();\n if (jwt) {\n headers.Authorization = `Bearer ${jwt}`;\n }\n const csrf = this.csrf();\n if (csrf) {\n headers[\"X-CSRF-Token\"] = csrf;\n }\n\n return headers;\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { FetchHelper } from \"../utils/fetchHelper\";\nimport { AuthService } from \"./authService\";\n/**\n * Service to handle getting confiuration from the dashboard backend.\n */\nexport class DashboardConfigService {\n /**\n * The explorer URL.\n */\n private _explorerURL: string;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of DashboardConfigService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n this._explorerURL = \"\";\n }\n\n /**\n * Initialise DashboardConfigService.\n */\n public async initialize(): Promise {\n try {\n this._explorerURL = await this.getExplorerURLBackend();\n } catch {}\n }\n\n /**\n * Get the explorer URL.\n * @returns The explorer URL.\n */\n public getExplorerURL(): string {\n return this._explorerURL;\n }\n\n /**\n * Get the explorer URL from the backend.\n * @returns The explorer URL.\n */\n private async getExplorerURLBackend(): Promise {\n const headers = this._authService.buildAuthHeaders();\n\n const response = await FetchHelper.json(\n `${window.location.protocol}//${window.location.host}`,\n \"/dashboard/settings\",\n \"get\",\n undefined,\n headers);\n\n return response.explorerUrl;\n }\n}\n","/**\n * Class to use local storage.\n */\nexport class LocalStorageService {\n /**\n * Load an item from local storage.\n * @param key The key of the item to load.\n * @returns The item loaded.\n */\n public load(key: string): T {\n let obj;\n if (window.localStorage) {\n try {\n const json = window.localStorage.getItem(key);\n\n if (json) {\n obj = JSON.parse(json);\n }\n } catch {\n // Nothing to do\n }\n }\n\n return obj as T;\n }\n\n /**\n * Save an item to local storage.\n * @param key The key of the item to store.\n * @param item The item to store.\n */\n public save(key: string, item: T): void {\n if (window.localStorage) {\n try {\n const json = JSON.stringify(item);\n window.localStorage.setItem(key, json);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Delete an item in local storage.\n * @param key The key of the item to store.\n */\n public remove(key: string): void {\n if (window.localStorage) {\n try {\n window.localStorage.removeItem(key);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Clear the local storage.\n * @param rootKey Clear all items that start with the root key, if undefined clear everything.\n */\n public clear(rootKey: string): void {\n if (window.localStorage) {\n try {\n if (rootKey) {\n const keysToRemove = [];\n const len = window.localStorage.length;\n for (let i = 0; i < len; i++) {\n const key = window.localStorage.key(i);\n if (key?.startsWith(rootKey)) {\n keysToRemove.push(key);\n }\n }\n for (const key of keysToRemove) {\n window.localStorage.removeItem(key);\n }\n } else {\n window.localStorage.clear();\n }\n } catch {\n // Nothing to do\n }\n }\n }\n}\n","import { Converter, RandomHelper } from \"@iota/util.js\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { WebSocketService } from \"../services/webSocketService\";\n\n/**\n * Service to handle the websocket connection.\n */\nexport class MetricsService {\n /**\n * The web socket service.\n */\n private readonly _webSocketService: WebSocketService;\n\n /**\n * The web socket subscriptions.\n */\n private _webSocketSubscriptions: string[];\n\n /**\n * The cached data.\n */\n private _cached: {\n [topic: number]: unknown[];\n };\n\n /**\n * Subscribers to the messages.\n */\n private readonly _subscriptions: {\n [topic: number]: {\n subscriptionId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleCallback?: (data: any) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n multipleCallback?: (data: any[]) => void;\n }[];\n };\n\n /**\n * Create a new instance of MetricsService.\n */\n constructor() {\n this._webSocketService = ServiceFactory.get(\"web-socket\");\n this._webSocketSubscriptions = [];\n this._subscriptions = {};\n this._cached = {};\n }\n\n /**\n * Initialise the service.\n */\n public initialize(): void {\n const topics: { topic: WebSocketTopic; isPublic: boolean }[] = [\n { topic: WebSocketTopic.SyncStatus, isPublic: true },\n { topic: WebSocketTopic.NodeInfoExtended, isPublic: false },\n { topic: WebSocketTopic.PublicNodeStatus, isPublic: true },\n { topic: WebSocketTopic.GossipMetrics, isPublic: true },\n { topic: WebSocketTopic.DatabaseSizeMetric, isPublic: false },\n { topic: WebSocketTopic.PeerMetrics, isPublic: false },\n { topic: WebSocketTopic.NetworkMetrics, isPublic: true }\n ];\n\n for (const t of topics) {\n this._webSocketSubscriptions.push(\n this._webSocketService.subscribe(\n t.topic,\n !t.isPublic,\n data => {\n this.triggerCallbacks(t.topic, data);\n }));\n }\n }\n\n /**\n * Closedown the service.\n */\n public closedown(): void {\n for (let i = 0; i < this._webSocketSubscriptions.length; i++) {\n this._webSocketService.unsubscribe(this._webSocketSubscriptions[i]);\n }\n this._webSocketSubscriptions = [];\n }\n\n /**\n * Subscribe to a topic.\n * @param topic The topic to subscribe to.\n * @param singleCallback The callback to send the data to.\n * @param multipleCallback The callback to send the data to.\n * @returns The subscription id.\n */\n public subscribe(\n topic: WebSocketTopic,\n singleCallback?: (data: T) => void, multipleCallback?: (dataAll: T[]) => void): string {\n if (!this._subscriptions[topic]) {\n this._subscriptions[topic] = [];\n }\n\n const subscriptionId = Converter.bytesToHex(RandomHelper.generate(32));\n\n this._subscriptions[topic].push({\n subscriptionId,\n singleCallback,\n multipleCallback\n });\n\n if (this._cached[topic] && this._cached[topic].length > 0) {\n if (multipleCallback) {\n multipleCallback(this._cached[topic] as T[]);\n }\n if (singleCallback) {\n singleCallback((this._cached[topic][this._cached[topic].length - 1] as T));\n }\n }\n\n return subscriptionId;\n }\n\n /**\n * Unsubscribe from a topic.\n * @param subscriptionId The subscription to unsubscribe.\n */\n public unsubscribe(subscriptionId: string): void {\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n const subscriptionIdx = this._subscriptions[topic].findIndex(s => s.subscriptionId === subscriptionId);\n if (subscriptionIdx >= 0) {\n this._subscriptions[topic].splice(subscriptionIdx, 1);\n\n if (this._subscriptions[topic].length === 0) {\n delete this._subscriptions[topic];\n break;\n }\n }\n }\n }\n\n /**\n * Trigger the callback handlers for the subscribers.\n * @param topic The message topic.\n * @param data The message data.\n */\n private triggerCallbacks(topic: WebSocketTopic, data: unknown): void {\n if (!this._cached[topic]) {\n this._cached[topic] = [];\n }\n if (topic === WebSocketTopic.DatabaseSizeMetric || topic === WebSocketTopic.NetworkMetrics) {\n if (Array.isArray(data)) {\n this._cached[topic].push(...data as unknown[]);\n } else {\n this._cached[topic].push(data);\n }\n } else {\n this._cached[topic].push(data);\n }\n this._cached[topic] = this._cached[topic].slice(-60);\n\n if (this._subscriptions[topic]) {\n for (const subscriber of this._subscriptions[topic]) {\n if (subscriber.singleCallback) {\n subscriber.singleCallback(this._cached[topic][this._cached[topic].length - 1]);\n }\n if (subscriber.multipleCallback) {\n subscriber.multipleCallback(this._cached[topic]);\n }\n }\n }\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { SessionStorageService } from \"./sessionStorageService\";\nimport { TangleService } from \"./tangleService\";\n\n/**\n * Service to handle getting confiuration from the node.\n */\nexport class NodeConfigService {\n /**\n * The network id.\n */\n private _networkId: string;\n\n /**\n * The storage servie.\n */\n private readonly _storageService: SessionStorageService;\n\n /**\n * Create a new instance of NodeConfigService.\n */\n constructor() {\n this._storageService = ServiceFactory.get(\"session-storage\");\n this._networkId = \"\";\n }\n\n /**\n * Initialise NodeConfigService.\n */\n public async initialize(): Promise {\n this._networkId = this._storageService.load(\"networkId\");\n\n if (!this._networkId) {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n const info = await tangleService.info();\n this.setNetworkId(info.protocol.networkName);\n } catch {}\n }\n }\n\n /**\n * Get the network id.\n * @returns The network id.\n */\n public getNetworkId(): string {\n return this._networkId;\n }\n\n /**\n * Set the network id.\n * @param networkId The new network id.\n */\n public setNetworkId(networkId: string): void {\n this._networkId = networkId;\n this._storageService.save(\"networkId\", this._networkId);\n }\n}\n","/**\n * Class to use session storage.\n */\n export class SessionStorageService {\n /**\n * Load an item from session storage.\n * @param key The key of the item to load.\n * @returns The item loaded.\n */\n public load(key: string): T {\n let obj;\n if (window.sessionStorage) {\n try {\n const json = window.sessionStorage.getItem(key);\n\n if (json) {\n obj = JSON.parse(json);\n }\n } catch {\n // Nothing to do\n }\n }\n\n return obj as T;\n }\n\n /**\n * Save an item to session storage.\n * @param key The key of the item to store.\n * @param item The item to store.\n */\n public save(key: string, item: T): void {\n if (window.sessionStorage) {\n try {\n const json = JSON.stringify(item);\n window.sessionStorage.setItem(key, json);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Delete an item in session storage.\n * @param key The key of the item to store.\n */\n public remove(key: string): void {\n if (window.sessionStorage) {\n try {\n window.sessionStorage.removeItem(key);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Clear the session storage.\n * @param rootKey Clear all items that start with the root key, if undefined clear everything.\n */\n public clear(rootKey: string): void {\n if (window.sessionStorage) {\n try {\n if (rootKey) {\n const keysToRemove = [];\n const len = window.sessionStorage.length;\n for (let i = 0; i < len; i++) {\n const key = window.sessionStorage.key(i);\n if (key?.startsWith(rootKey)) {\n keysToRemove.push(key);\n }\n }\n for (const key of keysToRemove) {\n window.sessionStorage.removeItem(key);\n }\n } else {\n window.sessionStorage.clear();\n }\n } catch {\n // Nothing to do\n }\n }\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Class to use for storing settings.\n */\nexport class SettingsService {\n /**\n * The blind mode setting.\n */\n private _blindMode: boolean;\n\n /**\n * The storage servie.\n */\n private readonly _storageService: LocalStorageService;\n\n /**\n * Create a new instance of SettingsService.\n */\n constructor() {\n this._storageService = ServiceFactory.get(\"local-storage\");\n this._blindMode = false;\n }\n\n /**\n * Initialize the service.\n */\n public initialize(): void {\n this._blindMode = this._storageService.load(\"blindMode\") ?? false;\n }\n\n /**\n * Get the blind mode setting.\n * @returns The blind mode.\n */\n public getBlindMode(): boolean {\n return this._blindMode;\n }\n\n /**\n * Set the blind mode setting.\n * @param blindMode The new blind mode.\n */\n public setBlindMode(blindMode: boolean): void {\n this._blindMode = blindMode;\n this._storageService.save(\"blindMode\", this._blindMode);\n EventAggregator.publish(\"settings.blindMode\", this._blindMode);\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Class to represent errors from Client.\n */\nexport class ClientError extends Error {\n /**\n * The route the request was made to.\n */\n public route: string;\n\n /**\n * The HTTP status code returned.\n */\n public httpStatus: number;\n\n /**\n * The code return in the payload.\n */\n public code?: string;\n\n /**\n * Create a new instance of ClientError.\n * @param message The message for the error.\n * @param route The route the request was made to.\n * @param httpStatus The http status code.\n * @param code The code in the payload.\n */\n constructor(message: string, route: string, httpStatus: number, code?: string) {\n super(message);\n this.route = route;\n this.httpStatus = httpStatus;\n this.code = code;\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Converter } from \"@iota/util.js\";\nimport { HexEncodedString } from \"../hexEncodedTypes\";\nimport { IClient } from \"../IClient\";\nimport { INodeInfo } from \"../info/INodeInfo\";\nimport { IResponse } from \"../IResponse\";\nimport { IPeer } from \"../peers/IPeer\";\nimport { IBlock } from \"../tangle/IBlock\";\nimport { ClientError } from \"./clientError\";\nimport type { SingleNodeClientOptions } from \"./singleNodeClientOptions\";\n\n/**\n * Client for API communication.\n */\nexport class SingleNodeClient implements IClient {\n /**\n * The endpoint for the API.\n * @internal\n */\n private readonly _endpoint: string;\n\n /**\n * The base path for the API.\n * @internal\n */\n private readonly _basePath: string;\n\n /**\n * The base path for the core API.\n * @internal\n */\n private readonly _coreApiPath: string;\n\n /**\n * The base path for the management API.\n * @internal\n */\n private readonly _managementApiPath: string;\n\n /**\n * The Api request timeout.\n * @internal\n */\n private readonly _timeout?: number;\n\n /**\n * Username for the endpoint.\n * @internal\n */\n private readonly _userName?: string;\n\n /**\n * Password for the endpoint.\n * @internal\n */\n private readonly _password?: string;\n\n /**\n * Additional headers to include in the requests.\n * @internal\n */\n private readonly _headers?: { [id: string]: string };\n\n /**\n * Create a new instance of client.\n * @param endpoint The endpoint.\n * @param options Options for the client.\n */\n constructor(endpoint: string, options?: SingleNodeClientOptions) {\n if (!endpoint) {\n throw new Error(\"The endpoint can not be empty\");\n }\n this._endpoint = endpoint.replace(/\\/+$/, \"\");\n this._basePath = options?.basePath ?? \"/api/\";\n this._coreApiPath = `${this._basePath}core/v3/`;\n this._managementApiPath = `${this._basePath}management/v1/`;\n this._timeout = options?.timeout;\n this._userName = options?.userName;\n this._password = options?.password;\n this._headers = options?.headers;\n\n if (this._userName && this._password && !this._endpoint.startsWith(\"https\")) {\n throw new Error(\"Basic authentication requires the endpoint to be https\");\n }\n\n if (this._userName && this._password && (this._headers?.authorization || this._headers?.Authorization)) {\n throw new Error(\"You can not supply both user/pass and authorization header\");\n }\n }\n\n /**\n * Get the info about the node.\n * @returns The node information.\n */\n public async info(): Promise {\n return this.fetchJson(this._coreApiPath, \"get\", \"info\");\n }\n\n /**\n * Get the block data by id.\n * @param blockId The block to get the data for.\n * @returns The block data.\n */\n public async block(blockId: HexEncodedString): Promise {\n return this.fetchJson(this._coreApiPath, \"get\", `blocks/${blockId}`);\n }\n\n /**\n * Add a new peer.\n * @param multiAddress The address of the peer to add.\n * @param alias An optional alias for the peer.\n * @returns The details for the created peer.\n */\n public async peerAdd(multiAddress: string, alias?: string): Promise {\n return this.fetchJson<\n {\n multiAddress: string;\n alias?: string;\n },\n IPeer\n >(this._managementApiPath, \"post\", \"peers\", {\n multiAddress,\n alias\n });\n }\n\n /**\n * Delete a peer.\n * @param peerId The peer to delete.\n * @returns Nothing.\n */\n public async peerDelete(peerId: string): Promise {\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n return this.fetchJson(this._managementApiPath, \"delete\", `peers/${peerId}`);\n }\n\n /**\n * Perform a request in json format.\n * @param basePath The base path for the request.\n * @param method The http method.\n * @param route The route of the request.\n * @param requestData Request to send to the endpoint.\n * @returns The response.\n * @internal\n */\n private async fetchJson(basePath: string, method: \"get\" | \"post\" | \"delete\", route: string, requestData?: T): Promise {\n const response = await this.fetchWithTimeout(\n method,\n `${basePath}${route}`,\n { \"Content-Type\": \"application/json\" },\n requestData ? JSON.stringify(requestData) : undefined\n );\n\n let errorMessage: string | undefined;\n let errorCode: string | undefined;\n\n if (response.ok) {\n if (response.status === 204) {\n // No content\n return {} as U;\n }\n try {\n const responseData: U & IResponse = await response.json();\n\n if (responseData.error) {\n errorMessage = responseData.error.message;\n errorCode = responseData.error.code;\n } else {\n return responseData;\n }\n } catch {}\n }\n\n if (!errorMessage) {\n try {\n const json = await response.json();\n if (json.error) {\n errorMessage = json.error.message;\n errorCode = json.error.code;\n }\n } catch {}\n }\n\n if (!errorMessage) {\n try {\n const text = await response.text();\n if (text.length > 0) {\n const match = /code=(\\d+), message=(.*)/.exec(text);\n if (match?.length === 3) {\n errorCode = match[1];\n errorMessage = match[2];\n } else {\n errorMessage = text;\n }\n }\n } catch {}\n }\n\n throw new ClientError(\n errorMessage ?? response.statusText,\n route,\n response.status,\n errorCode ?? response.status.toString()\n );\n }\n\n /**\n * Perform a fetch request.\n * @param method The http method.\n * @param route The route of the request.\n * @param headers The headers for the request.\n * @param body The request body.\n * @returns The response.\n * @internal\n */\n private async fetchWithTimeout(\n method: \"get\" | \"post\" | \"delete\",\n route: string,\n headers?: { [id: string]: string },\n body?: string | Uint8Array\n ): Promise {\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (this._timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(() => {\n if (controller) {\n controller.abort();\n }\n }, this._timeout);\n }\n\n const finalHeaders: { [id: string]: string } = {};\n\n if (this._headers) {\n for (const header in this._headers) {\n finalHeaders[header] = this._headers[header];\n }\n }\n\n if (headers) {\n for (const header in headers) {\n finalHeaders[header] = headers[header];\n }\n }\n\n if (this._userName && this._password) {\n const userPass = Converter.bytesToBase64(Converter.utf8ToBytes(`${this._userName}:${this._password}`));\n finalHeaders.Authorization = `Basic ${userPass}`;\n }\n\n try {\n const response = await fetch(`${this._endpoint}${route}`, {\n method,\n headers: finalHeaders,\n body,\n signal: controller ? controller.signal : undefined\n });\n\n return response;\n } catch (err) {\n throw err instanceof Error && err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Combine the query params.\n * @param queryParams The quer params to combine.\n * @returns The combined query params.\n */\n private combineQueryParams(queryParams?: string[]): string {\n return queryParams && queryParams.length > 0 ? `?${queryParams.join(\"&\")}` : \"\";\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { SingleNodeClient } from \"../models/clients/singleNodeClient\";\nimport { IClient } from \"../models/IClient\";\nimport { INodeInfo } from \"../models/info/INodeInfo\";\nimport { IBlock } from \"../models/tangle/IBlock\";\nimport { AuthService } from \"./authService\";\n/**\n * Service to handle api requests.\n */\nexport class TangleService {\n /**\n * The node info.\n */\n private _nodeInfo?: INodeInfo;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of TangleService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n }\n\n /**\n * Get the node info.\n * @returns The node info.\n */\n public async info(): Promise {\n const client = this.buildClient();\n this._nodeInfo = await client.info();\n return this._nodeInfo;\n }\n\n /**\n * Get the block payload.\n * @param blockId The block to get.\n * @returns The response data.\n */\n public async block(blockId: string): Promise {\n try {\n const client = this.buildClient();\n return await client.block(blockId);\n } catch {}\n }\n\n /**\n * Add a peer.\n * @param peerAddress The peer address.\n * @param peerAlias The peer alias.\n */\n public async peerAdd(peerAddress: string, peerAlias: string): Promise {\n const client = this.buildClient();\n\n await client.peerAdd(peerAddress, peerAlias);\n }\n\n /**\n * Delete a peer.\n * @param peerId The peer to delete.\n */\n public async peerDelete(peerId: string): Promise {\n const client = this.buildClient();\n\n await client.peerDelete(peerId);\n }\n\n\n /**\n * Build a client with auth header.\n * @returns The client.\n */\n private buildClient(): IClient {\n const headers = this._authService.buildAuthHeaders();\n\n return new SingleNodeClient(\n `${window.location.protocol}//${window.location.host}`,\n {\n basePath: \"/dashboard/api/\",\n headers\n });\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Class the help with themes.\n */\nexport class ThemeService {\n /**\n * The theme.\n */\n private _theme: string;\n\n /**\n * Create a new instance of ThemeService.\n */\n constructor() {\n this._theme = \"light\";\n }\n\n /**\n * Initialize the theme.\n */\n public initialize(): void {\n const storageService = ServiceFactory.get(\"local-storage\");\n\n const theme = storageService.load(\"theme\");\n\n this.apply(theme, false);\n }\n\n /**\n * Apply a theme.\n * @param theme The theme to apply.\n * @param save Save the theme.\n */\n public apply(theme: string, save: boolean): void {\n const currentTheme = this._theme;\n this._theme = theme ?? \"light\";\n\n document.body.classList.remove(`theme-${currentTheme}`);\n document.body.classList.add(`theme-${this._theme}`);\n\n EventAggregator.publish(\"theme\", this._theme);\n\n if (save) {\n this.save();\n }\n }\n\n /**\n * Get the theme.\n * @returns The theme.\n */\n public get(): string {\n return this._theme;\n }\n\n /**\n * Save theme.\n */\n public save(): void {\n const storageService = ServiceFactory.get(\"local-storage\");\n storageService.save(\"theme\", this._theme);\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IVertex } from \"../models/visualizer/IVertex\";\nimport { IVerticesCounts } from \"../models/visualizer/IVerticesCounts\";\nimport { VisualizerVertexOperation } from \"../models/visualizer/visualizerVertexOperation\";\nimport { ISyncStatus } from \"../models/websocket/ISyncStatus\";\nimport { IVisualizerBlockStateInfo } from \"../models/websocket/IVisualizerBlockStateInfo\";\nimport { IVisualizerTipInfo } from \"../models/websocket/IVisualizerTipInfo\";\nimport { IVisualizerVertex } from \"../models/websocket/IVisualizerVertex\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { DataHelper } from \"../utils/dataHelper\";\nimport { WebSocketService } from \"./webSocketService\";\n\n/**\n * Visualizer Service.\n */\nexport class VisualizerService {\n /**\n * The web socket service.\n */\n private readonly _webSocketService: WebSocketService;\n\n /**\n * Web socket subscriptions.\n */\n private _subscriptions: string[];\n\n /**\n * The known vertices.\n */\n private _vertices: {\n [id: string]: IVertex;\n };\n\n /**\n * The ordered vertices.\n */\n private _verticesOrder: string[];\n\n /**\n * The counts.\n */\n private readonly _counts: IVerticesCounts;\n\n /**\n * The maximum number of vertices.\n */\n private readonly _verticesLimit: number;\n\n /**\n * The vertex update callback.\n */\n private _vertexCallback?: (vertex: IVertex, operation: VisualizerVertexOperation) => void;\n\n /**\n * The counts were updated callback.\n */\n private _countsCallback?: (counts: IVerticesCounts) => void;\n\n /**\n * Create a new instance of VisualizerService.\n */\n constructor() {\n this._subscriptions = [];\n this._vertices = {};\n this._verticesOrder = [];\n this._verticesLimit = 5000;\n this._counts = {\n total: 0,\n accepted: 0,\n confirmed: 0,\n finalized: 0,\n transactions: 0,\n tips: 0\n };\n this._webSocketService = ServiceFactory.get(\"web-socket\");\n }\n\n /**\n * The callback triggered with vertex updates.\n * @param vertexCallback The vertex callback.\n * @param countsCallback The counts callback.\n */\n public subscribe(\n vertexCallback: (vertex: IVertex, operation: VisualizerVertexOperation) => void,\n countsCallback: (counts: IVerticesCounts) => void): void {\n this._subscriptions.push(\n this._webSocketService.subscribe(\n WebSocketTopic.SyncStatus,\n false,\n data => this.updateSyncStatus(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.VisualizerVertex,\n false,\n data => this.updateVertices(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.VisualizerTipInfo,\n false,\n data => this.updateTipInfo(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.VisualizerBlockStateInfo,\n false,\n data => this.updateBlockStateInfo(data)\n ));\n\n this._vertexCallback = vertexCallback;\n this._countsCallback = countsCallback;\n }\n\n /**\n * Unsubscribe and cleanup.\n */\n public unsubscribe(): void {\n for (const subscription of this._subscriptions) {\n this._webSocketService.unsubscribe(subscription);\n }\n this._subscriptions = [];\n this._vertices = {};\n this._verticesOrder = [];\n\n // reset counts\n this._counts.total = 0;\n this._counts.accepted = 0;\n this._counts.confirmed = 0;\n this._counts.finalized = 0;\n this._counts.transactions = 0;\n this._counts.tips = 0;\n }\n\n /**\n * Updates the sync status of the visualizer.\n * @param data The sync status data.\n */\n private updateSyncStatus(data?: ISyncStatus) {\n if (data) {\n for (const vertex of Object.values(this._vertices)) {\n if (vertex.isFinalized) {\n // already finalized\n continue;\n }\n\n if (!vertex.isAccepted && !vertex.isConfirmed) {\n // not accepted or confirmed\n continue;\n }\n\n if (vertex.slot !== undefined && vertex.slot <= data.latestFinalizedSlot) {\n vertex.isFinalized = true;\n this._counts.finalized++;\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n }\n\n /**\n * Add a new vertex.\n * @param vert The vertex to add.\n */\n private updateVertices(vert?: IVisualizerVertex): void {\n if (vert) {\n const shortVertId = vert.id.slice(0, 10);\n\n let vertex = this._vertices[shortVertId];\n\n let op: VisualizerVertexOperation = \"add\";\n\n if (!vertex) {\n if (vert.isBasicBlockSignedTransaction) {\n this._counts.transactions++;\n }\n this._verticesOrder.push(shortVertId);\n this.checkLimit();\n\n vertex = {\n fullId: vert.id,\n shortId: shortVertId,\n slot: DataHelper.computeSlotIndex(vert.id)\n };\n } else {\n op = \"update\";\n }\n\n vertex.parents = vert.parents;\n vertex.blockState = vert.blockState;\n vertex.isBasicBlockTaggedData = vert.isBasicBlockTaggedData;\n vertex.isBasicBlockSignedTransaction = vert.isBasicBlockSignedTransaction;\n vertex.isBasicBlockCandidacyAnnouncement = vert.isBasicBlockCandidacyAnnouncement;\n vertex.isValidationBlock = vert.isValidationBlock;\n if (!vertex.isTip && vert.isTip) {\n this._counts.tips++;\n } else if (vertex.isTip && !vert.isTip) {\n this._counts.tips--;\n }\n vertex.isTip = vert.isTip;\n\n this.updateVertexBlockStateInfo(vertex, vert.blockState);\n\n this._vertices[shortVertId] = vertex;\n\n this._counts.total = this._verticesOrder.length;\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, op);\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n\n /**\n * Check the number of vertices.\n */\n private checkLimit(): void {\n while (this._verticesOrder.length > this._verticesLimit) {\n const deleteId = this._verticesOrder.shift();\n\n if (deleteId) {\n const vertex = this.removeVertex(deleteId);\n\n if (vertex?.parents) {\n for (const parent of vertex.parents) {\n this.removeVertex(parent);\n }\n }\n }\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n\n /**\n * Delete a vertex.\n * @param vertexId The id of the vertex to delete.\n * @returns The deleted vertex.\n */\n private removeVertex(vertexId: string | undefined): IVertex | undefined {\n if (!vertexId) {\n return;\n }\n let vertex = this._vertices[vertexId];\n if (vertex) {\n if (vertex.isAccepted) {\n this._counts.accepted--;\n }\n if (vertex.isConfirmed) {\n this._counts.confirmed--;\n }\n if (vertex.isFinalized) {\n this._counts.finalized--;\n }\n if (vertex.isBasicBlockSignedTransaction) {\n this._counts.transactions--;\n }\n if (vertex.isTip) {\n this._counts.tips--;\n }\n\n delete this._vertices[vertexId];\n } else {\n vertex = { shortId: vertexId };\n }\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"delete\");\n }\n\n return vertex;\n }\n\n /**\n * Update the tip information.\n * @param data The tip info data.\n */\n private updateTipInfo(data?: IVisualizerTipInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n if (vertex) {\n if (!vertex.isTip && data.isTip) {\n this._counts.tips++;\n } else if (vertex.isTip && !data.isTip) {\n this._counts.tips--;\n }\n vertex.isTip = data.isTip;\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n\n private updateVertexBlockStateInfo(vertex: IVertex, blockState: string): boolean {\n if (vertex) {\n let updated = false;\n switch (blockState) {\n case \"accepted\":\n if (!vertex.isAccepted) {\n this._counts.accepted++;\n updated = true;\n vertex.isAccepted = true;\n }\n break;\n case \"confirmed\":\n if (!vertex.isConfirmed) {\n this._counts.confirmed++;\n updated = true;\n vertex.isConfirmed = true;\n }\n break;\n default:\n break;\n }\n\n return updated;\n }\n\n return false;\n }\n\n /**\n * Update the solid information.\n * @param data The solid info data.\n */\n private updateBlockStateInfo(data?: IVisualizerBlockStateInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n\n if (!this.updateVertexBlockStateInfo(vertex, data.blockState)) {\n return;\n }\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n}\n","/* eslint-disable unicorn/prefer-add-event-listener, unicorn/prefer-node-protocol*/\nimport { Converter, RandomHelper } from \"@iota/util.js\";\nimport { Buffer } from \"buffer\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IWebSocketMessage } from \"../models/websocket/IWebSocketMessage\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { AuthService } from \"./authService\";\n\n/**\n * Service to handle the websocket connection.\n */\nexport class WebSocketService {\n /**\n * Timer to retry failed connections.\n */\n private _reconnectTimer?: NodeJS.Timer;\n\n /**\n * The last time we received a message.\n */\n private _lastMessage: number;\n\n /**\n * The web socket connection.\n */\n private _webSocket?: WebSocket;\n\n /**\n * Subscribers to the messages.\n */\n private readonly _subscriptions: {\n [topic: number]:\n {\n requiresAuth: boolean;\n isSubscribed: boolean;\n subs: {\n subscriptionId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: any) => void;\n }[];\n };\n };\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of WebSocketService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n\n this._subscriptions = {};\n this._lastMessage = 0;\n }\n\n /**\n * Subscribe to a topic.\n * @param topic The topic to subscribe to.\n * @param requiresAuth Requires authentication.\n * @param callback The callback to send the data to.\n * @returns The subscription id.\n */\n public subscribe(topic: WebSocketTopic, requiresAuth: boolean, callback: (data: T) => void): string {\n if (!this._subscriptions[topic]) {\n this._subscriptions[topic] = {\n requiresAuth,\n isSubscribed: false,\n subs: []\n };\n }\n\n const subscriptionId = Converter.bytesToHex(RandomHelper.generate(32));\n\n this._subscriptions[topic].subs.push({\n subscriptionId,\n callback\n });\n\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n // If we are already connected just subscribe to the topic.\n this.subscribeTopic(topic);\n } else if (!this._webSocket) {\n // Otherwise connect the socket which will in turn subscribe to\n // all the topics with callbacks.\n this.connectSocket();\n }\n\n return subscriptionId;\n }\n\n /**\n * Unsubscribe from a topic.\n * @param subscriptionId The subscription to unsubscribe.\n */\n public unsubscribe(subscriptionId: string): void {\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n const subscriptionIdx = this._subscriptions[topic].subs.findIndex(s => s.subscriptionId === subscriptionId);\n if (subscriptionIdx >= 0) {\n this._subscriptions[topic].subs.splice(subscriptionIdx, 1);\n\n if (this._subscriptions[topic].subs.length === 0) {\n this.unsubscribeTopic(topic);\n // No more subscriptions for this topic so unsubscribe the topic.\n delete this._subscriptions[topic];\n break;\n }\n }\n }\n\n // No more subscriptions so disconnect the socket.\n if (Object.keys(this._subscriptions).length === 0) {\n this.clearTimer();\n this.disconnectSocket();\n }\n }\n\n /**\n * We resubscribe if the authentication, jwt token has been updated.\n */\n public resubscribe(): void {\n const topics = Object.keys(this._subscriptions).map(Number);\n for (const topic of topics) {\n this.unsubscribeTopic(topic);\n }\n\n // If the socket is not yet open dont subscribe again\n // when the socket open completes the subscribeTopics will\n // be called automatically\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n for (const topic of topics) {\n this.subscribeTopic(topic);\n }\n }\n }\n\n /**\n * Connect the web socket.\n */\n private connectSocket(): void {\n this.clearTimer();\n this.disconnectSocket();\n\n let uri = \"ws:\";\n\n if (window.location.protocol === \"https:\") {\n uri = \"wss:\";\n }\n uri += `//${window.location.hostname}:${window.location.port}/dashboard/ws`;\n\n this._webSocket = new WebSocket(uri);\n\n this._webSocket.onopen = () => {\n // Socket has opened so subscribe for all the registered subscription topics\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n this.subscribeTopic(topic);\n }\n };\n\n this._webSocket.onclose = () => {\n this.disconnectSocket();\n };\n\n this._webSocket.onerror = err => {\n console.error(\"Socket error\", err);\n };\n\n this._webSocket.onmessage = msg => {\n this._lastMessage = Date.now();\n this.handleMessage(msg.data as string);\n };\n\n this._lastMessage = Date.now();\n this._reconnectTimer = setInterval(() => this.reconnect(), 5000);\n }\n\n /**\n * Disconnect the web socket.\n */\n private disconnectSocket(): void {\n if (this._webSocket) {\n try {\n if (this._webSocket.readyState === WebSocket.OPEN) {\n this._webSocket.close();\n }\n } catch {}\n this._webSocket = undefined;\n }\n }\n\n /**\n * Clear the timer.\n */\n private clearTimer(): void {\n if (this._reconnectTimer) {\n clearInterval(this._reconnectTimer);\n this._reconnectTimer = undefined;\n }\n }\n\n /**\n * Subscribe to a topic.\n * @param topicId The topic to subscribe to.\n */\n private subscribeTopic(topicId: number) {\n if (this._subscriptions[topicId]) {\n const requiresAuth = this._subscriptions[topicId].requiresAuth;\n const jwt = this._authService.isLoggedIn();\n\n if (!requiresAuth || (requiresAuth && jwt)) {\n this._subscriptions[topicId].isSubscribed = true;\n\n const arrayBuf = new ArrayBuffer(2 + (jwt && requiresAuth ? jwt.length : 0));\n const view = new Uint8Array(arrayBuf);\n view[0] = 0; // register\n view[1] = topicId;\n\n if (jwt && requiresAuth) {\n view.set(Buffer.from(jwt), 2);\n }\n\n if (this._webSocket) {\n this._webSocket.send(arrayBuf);\n }\n }\n }\n }\n\n /**\n * Unsubscribe from a topic.\n * @param topicId The topic to unsubscribe from.\n */\n private unsubscribeTopic(topicId: number) {\n if (this._subscriptions[topicId]?.isSubscribed) {\n this._subscriptions[topicId].isSubscribed = false;\n\n const arrayBuf = new ArrayBuffer(2);\n const view = new Uint8Array(arrayBuf);\n view[0] = 1; // unregister\n view[1] = topicId;\n\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n this._webSocket.send(arrayBuf);\n }\n }\n }\n\n /**\n * Handle the messages.\n * @param msg The mesage data.\n */\n private handleMessage(msg: string): void {\n const message = JSON.parse(msg) as IWebSocketMessage;\n\n if (this._subscriptions[message.type]) {\n for (const subscriber of this._subscriptions[message.type].subs) {\n subscriber.callback(message.data);\n }\n }\n }\n\n /**\n * Reconnect if we have not received messages.\n */\n private reconnect(): void {\n // Only reconnect if we have subscriptions.\n if (Object.keys(this._subscriptions)) {\n const now = Date.now();\n if (now - this._lastMessage > 10000) {\n this.connectSocket();\n }\n }\n }\n}\n","/* eslint-disable unicorn/prefer-top-level-await */\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport App from \"./app/App\";\nimport { ServiceFactory } from \"./factories/serviceFactory\";\nimport \"./index.scss\";\nimport { IBrandConfiguration } from \"./models/IBrandConfiguration\";\nimport { AuthService } from \"./services/authService\";\nimport { DashboardConfigService } from \"./services/dashboardConfigService\";\nimport { EventAggregator } from \"./services/eventAggregator\";\nimport { LocalStorageService } from \"./services/localStorageService\";\nimport { MetricsService } from \"./services/metricsService\";\nimport { NodeConfigService } from \"./services/nodeConfigService\";\nimport { SessionStorageService } from \"./services/sessionStorageService\";\nimport { SettingsService } from \"./services/settingsService\";\nimport { TangleService } from \"./services/tangleService\";\nimport { ThemeService } from \"./services/themeService\";\nimport { VisualizerService } from \"./services/visualizerService\";\nimport { WebSocketService } from \"./services/webSocketService\";\nimport { BrandHelper } from \"./utils/brandHelper\";\n\ninitServices()\n .then(brandConfiguration => {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n const container = document.querySelector(\"#root\")!;\n const root = createRoot(container);\n root.render(\n !brandConfiguration\n ? (
REACT_APP_BRAND_ID is not set
)\n : (\n \n \n \n )\n );\n })\n .catch(err => console.error(err));\n\n/**\n * Initialise the services.\n * @returns The brand configuration.\n */\nasync function initServices(): Promise {\n ServiceFactory.register(\"local-storage\", () => new LocalStorageService());\n ServiceFactory.register(\"session-storage\", () => new SessionStorageService());\n const settingsService = new SettingsService();\n ServiceFactory.register(\"settings\", () => settingsService);\n\n const authService = new AuthService();\n await authService.initialize();\n ServiceFactory.register(\"auth\", () => authService);\n\n const webSocketService = new WebSocketService();\n ServiceFactory.register(\"web-socket\", () => webSocketService);\n ServiceFactory.register(\"tangle\", () => new TangleService());\n\n const themeService = new ThemeService();\n themeService.initialize();\n ServiceFactory.register(\"theme\", () => themeService);\n\n const dashboardConfigService = new DashboardConfigService();\n await dashboardConfigService.initialize();\n ServiceFactory.register(\"dashboard-config\", () => dashboardConfigService);\n\n const nodeConfigService = new NodeConfigService();\n await nodeConfigService.initialize();\n ServiceFactory.register(\"node-config\", () => nodeConfigService);\n\n const metricsService = new MetricsService();\n ServiceFactory.register(\"metrics\", () => metricsService);\n metricsService.initialize();\n\n ServiceFactory.register(\"visualizer\", () => new VisualizerService());\n\n EventAggregator.subscribe(\"auth-state\", \"init\", async () => {\n webSocketService.resubscribe();\n });\n\n EventAggregator.subscribe(\"online\", \"init\", async o => {\n if (o) {\n await nodeConfigService.initialize();\n webSocketService.resubscribe();\n }\n });\n\n settingsService.initialize();\n\n return BrandHelper.initialize();\n}\n"],"names":["addEventListener","removeEventListener","el","eventName","listener","useCapture","Events","document","add","stdAttach","rm","stdDetach","oldIEAttach","oldIEDetach","module","exports","Error","attachEvent","detachEvent","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","indexOf","start","end","num","output","bigInt","undefined","BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseBase","parseValue","BigInteger","value","sign","this","isSmall","SmallInteger","NativeBigInt","isPrecise","n","Math","floor","arrayToSmall","trim","compareAbs","createArray","x","truncate","ceil","a","b","sum","l_a","l_b","r","carry","base","addAny","addSmall","l","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","j","multiplySmall","shiftLeft","concat","multiplyKaratsuba","y","max","slice","d","c","ac","bd","abcd","multiplySmallAndArray","square","divModSmall","lambda","q","remainder","divisor","quotient","divModAny","self","negate","abs","comparison","quotientDigit","shift","result","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","check","part","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","equals","isEven","isDivisibleBy","lesser","millerRabinTest","nPrev","prev","divide","next","modPow","prototype","Object","create","plus","subtractAny","minus","small","multiply","l1","l2","times","_multiplyBySmall","divmod","over","pow","toString","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","compare","Infinity","compareTo","eq","notEquals","neq","greater","gt","lt","greaterOrEquals","geq","lesserOrEquals","leq","isPrime","strict","bits","bitLength","logN","log","toJSNumber","t","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","String","shiftRight","remQuo","and","or","xor","LOBMASK_I","roughLOB","integerLogarithm","p","e","min","gcd","text","toLowerCase","absBase","alphabetValues","digits","parseBaseFromArray","val","toBase","apply","map","valueOf","neg","Number","out","left","digit","toBaseString","stringify","parseStringValue","split","decimalPlace","test","parseNumberValue","toArray","str","toJSON","parseInt","minusOne","lcm","isInstance","usedRNG","random","low","range","restricted","top","fromArray","hasOwnProperty","define","base64","require","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","obj","isBuffer","checked","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","list","pos","set","swap16","swap32","swap64","toLocaleString","inspect","replace","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","writable","configurable","name","stack","message","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","constructor","table","i16","BufferBigIntNotDefined","hasOwn","classNames","classes","argType","inner","key","default","x1","y1","x2","y2","x3","y3","x4","y4","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","greek","mo","w","h","s","ms","decimal","ARABIC_DIGITS","LANGUAGES","af","ar","getArabicForm","delimiter","_formatCount","count","replacements","assign","characters","character","has","bg","getSlavicForm","bn","ca","cs","getCzechOrSlovakForm","cy","da","de","en","eo","es","et","eu","fa","fi","fo","fr","gr","he","hr","mod10","hu","id","is","it","ja","km","kn","ko","ku","getLithuanianForm","lv","getLatvianForm","mk","mr","nl","no","pl","getPolishForm","pt","ro","ru","sq","sr","ta","te","uk","ur","sk","sl","sv","sw","_numberFirst","tr","th","vi","zh_CN","zh_TW","humanizer","passedOptions","humanizerOptions","options","piece","unitName","unitMS","unitCount","dictionary","languagesFromOptions","language","fallbacks","languageToTry","languages","getDictionary","pieces","unitMeasures","expValue","maxDecimalPoints","unitCountFloat","parseFloat","toFixed","ratioToLargerUnit","previousPiece","firstOccupiedUnitIndex","round","largest","conjunction","serialComma","doHumanization","spacer","humanizeDuration","countStr","word","dictionaryValue","destination","source","prop","getSupportedLanguages","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","isNaN","LN2","hookCallback","some","hooks","setHookCallback","callback","isObject","hasOwnProp","isObjectEmpty","k","isUndefined","isNumber","isDate","Date","arrLen","extend","createUTC","format","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","args","argLen","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","_calendar","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","degree","betweenness","closeness","eccentricity","graph","oriented","currentNode","Q","S","pred","dist","sigma","delta","centrality","forEachNode","node","singleSourceShortestPath","accumulate","setDeltaToZero","pop","coeff","predcessors","idx","nodeId","forEachLinkedNode","toId","otherNode","processNode","distances","reachableNodesTotal","totalDistance","reduce","inDegreeCalculator","links","outDegreeCalculator","fromId","inoutDegreeCalculator","kind","getNodeDegree","getLinks","maxDist","subject","reservedWords","validateSubject","eventsStorage","registeredEvents","on","ctx","handlers","off","callbacks","splice","fire","fireArguments","callbackInfo","createEventsStorage","augment","settings","physicsSettings","physicsSimulator","createSimulator","nodeMass","nodeBodies","springs","bodiesCount","springTransform","noop","initBody","forEachLink","initLink","onGraphChanged","wasStable","api","step","lastMove","isStable","isStableNow","getNodePosition","getInitializedBody","setNodePosition","body","setPosition","invalidateBBox","getLinkPosition","linkId","spring","getGraphRect","getBBox","forEachBody","cb","bodyId","pinNode","isPinned","isNodePinned","dispose","getBody","getSpring","link","hasLink","simulator","eventify","changes","change","changeType","releaseNode","releaseLink","getNodesCount","getNode","position","neighbors","maxNeighbors","otherBody","getNeighborBodies","getBestNewBodyPosition","addBodyAt","updateBodyMass","isNodeOriginallyPinned","removeBody","fromBody","toBody","addSpring","removeSpring","mass","jsonGraph","nodeTransform","linkTransform","stored","JSON","parse","createGraph","nodes","parsedNode","addNode","addLink","ladder","complete","g","completeBipartite","balancedBinTree","level","root","right","path","circularLadder","grid","grid3","z","noLinks","wattsStrogatz","seed","neighborsSize","nextDouble","newTo","needsRewire","removeLink","cliqueCircle","cliqueCount","cliqueSize","appendClique","inputSeed","Generator","randomIterator","customRandom","localRandom","shuffle","maxValue","uniform","gaussian","sqrt","multigraph","uniqueLinkId","multiEdges","nodesCount","suspendEvents","objectKeysIterator","forInIterator","createLink","makeLinkId","isMultiEdge","getLink","Link","recordLinkChange","recordNodeChange","enterModification","exitModification","graphPart","fromNode","toNode","addLinkToNode","removeNode","getLinksCount","forEachOrientedLink","linkedNodeId","forEachNonOrientedLink","beginUpdate","endUpdate","clear","hasNode","realOn","enterModificationReal","exitModificationReal","recordLinkChangeReal","recordNodeChangeReal","monitorSubscribers","Node","prevLinks","indexOfElementInArray","fromNodeId","toNodeId","element","merge","targetHasIt","optionsValueType","Body","Vector2d","prevPos","force","velocity","Body3d","Vector3d","reset","Spring","expose","createQuadTree","springLength","springCoeff","gravity","theta","dragCoeff","timeStep","createBounds","createDragForce","createSpringForce","integrate","integrator","createBody","bodies","quadTree","bounds","springForce","dragForce","bboxNeedsUpdate","publicApi","insertBodies","updateBodyForce","update","accumulateForces","movement","addBody","body1","body2","springWeight","springCoefficient","getTotalMovement","getBestNewPosition","box","boundingBox","MAX_VALUE","MIN_VALUE","graphRect","baseX","baseY","physics","dx","tx","dy","ty","vx","vy","weight","getChild","quad0","quad1","quad2","quad3","setChild","child","InsertStack","isSamePosition","updateQueue","insertStack","nodesCache","currentInCache","newNode","bottom","insert","getRoot","sourceBody","queue","fx","fy","queueLength","shiftIdx","pushIdx","differentBody","massX","massY","newOptions","newBody","isEmpty","stackItem","oldBody","retriesCount","quadIdx","popIdx","InsertStackElement","point1","point2","randomFunc","customNodeTransform","customLinkTransform","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","pretty","encodeURIComponent","segment","attachKeys","re","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","object","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","Set","ea","ha","ia","window","createElement","ka","la","ma","f","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","substring","tb","menuitem","area","br","col","embed","img","keygen","meta","param","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","sibling","current","Yb","$b","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","ee","fe","ge","ie","le","color","email","password","search","tel","url","me","ne","oe","event","listeners","pe","qe","se","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","D","of","pf","qf","rf","sf","bind","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","uh","vh","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","nk","ok","pk","Y","Z","qk","rk","tk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","dl","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","ol","ql","rl","unmount","unstable_scheduleHydration","querySelectorAll","form","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","svg","compileTemplate","domEvents","svgns","xlinkns","attrBag","svgElement","compiledTempalte","simplesvg","attr","append","dataSource","content","removeAttributeNS","getAttributeNS","attributes","parser","svgText","namespaces","tagLength","addNamespaces","parseFromString","domNode","allBindings","extractAllBindings","changeModel","BINDING_EXPR","hasChildNodes","domChildren","childNodes","modelNameMatch","modelPropertyName","propertyBindings","textSetter","bindTextContent","attrs","bindDomAttribute","domAttribute","attrName","localName","attributeSetter","fail","DOMParser","createDomparser","betweennessCentrality","toVivaGraphCentralityFormat","degreeCentrality","density","directed","graphics","nodeEvents","bindDragNDrop","events","nodeUI","getNodeUI","dragndrop","onStart","onDrag","onStop","release","drag","scroll","prevSelectStart","prevDragStart","dragObject","startX","startY","touchInProgress","pinchZoomLength","move","handleDisabledEvent","handleMouseMove","handleMouseDown","documentEvents","handleMouseUp","onselectstart","ondragstart","handleMouseWheel","mousePos","posx","posy","getMousePos","elementOffset","findElementPosition","relMousePos","updateScrollEvents","scrollCallback","browserInfo","browser","getPinchZoomLength","finger1","finger2","handleTouchMove","touch","currentPinchLength","handleTouchEnd","handleTouchStart","handleSignleFingerTouch","onScroll","inputEvents","createInputEvents","draggedNode","internalHandlers","mouseDown","mouseCapture","mouseUp","releaseMouseCapture","mouseMove","userSettings","maxX","maxY","rand","Rect","layoutLinks","placeNodeCallback","layoutNodes","ensureNodeInitialized","updateGraphRect","updateNodePositions","ensureLinkInitialized","run","iterationsCount","placeNode","newPlaceNodeCallbackOrNode","stop","backwardCompatible","userAgent","nullEvents","handler","createDocumentEvents","curleft","curtop","offsetParent","offsetLeft","offsetTop","container","clientWidth","clientHeight","intersect","scope","lastTime","vendors","global","requestAnimationFrame","vendorPrefix","cancelAnimationFrame","currTime","timeToCall","intervalId","startTimer","stopTimer","restart","createTimer","inputManager","animationTimer","containerDrag","layout","interactive","rendererInitialized","updateCenterRequired","userInteraction","isPaused","transform","offsetX","offsetY","scale","publicEvents","forceDirected","svgGraphics","renderLinks","prerender","domInputManager","prepareSettings","init","createNodeUi","createLinkUi","updateCenter","windowEvents","onWindowResized","releaseContainerDragManager","isInteractive","translateRel","renderGraph","scaleOffset","scrollPoint","listenNodeEvents","releaseGraphEvents","listenToEvents","timer","onRenderFrame","renderIterations","resetScale","pause","resume","rerender","zoomOut","zoomIn","getTransform","moveTo","graphCenterChanged","getGraphics","getLayout","removeLinkUi","releaseNodeEvents","removeNodeUi","interactionName","beginRender","renderNodes","endRender","resetStable","containerSize","getDimension","cx","nodePosition","linkPosition","wasPinned","oldPos","processNodeChange","processLinkChange","scaleFactor","svgContainer","svgRoot","initCallback","actualScale","allNodes","allLinks","nodeBuilder","nodePositionCallback","linkBuilder","linkPositionCallback","linkUI","fromPos","toPos","fireRescaled","cachedPos","cachedFromPos","cachedToPos","updateTransform","createSvgRoot","getLinkUI","builderCallback","newPlaceCallback","placeLink","newPlaceLinkCallback","createSVGPoint","getCTM","origin","matrixTransform","inverse","createSVGMatrix","translate","childElementCount","getGraphicsRoot","callbackWhenReady","getSvgRoot","enableBlending","preserveDrawingBuffer","clearColor","clearColorValue","graphicsRoot","userPlaceNodeCallback","userPlaceLinkCallback","linksCount","linkProgram","webglLinkProgram","nodeProgram","webglNodeProgram","nodeUIBuilder","webglSquare","linkUIBuilder","webglLine","updateTransformUniform","resetScaleInternal","updateSize","offsetWidth","offsetHeight","viewport","webglInputManager","bringLinkToFront","srcLinkId","frontLinkId","getFrontLinkId","bringToFront","boundPosition","uiid","createNode","contextParameters","getContext","alert","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","COLOR_BUFFER_BIT","load","isSupported","linkIdToRemove","lastLinkUI","nodeIdToRemove","lastNodeUI","replaceProperties","omitLinksRendering","setNodeProgram","newProgram","setLinkProgram","transformClientToGraphCoordinates","transformGraphToClientCoordinates","getNodeAtClientPos","clientPos","preciseCheck","parsedColor","canvas","isDirty","copyArrayPart","elementsCount","swapArrayPart","createProgram","vertexShaderSrc","fragmentShaderSrc","program","vs","createShader","VERTEX_SHADER","fs","FRAGMENT_SHADER","attachShader","getProgramParameter","LINK_STATUS","getShaderInfoLog","extendArray","itemsInBuffer","elementsPerItem","extendedArray","Float32Array","getLocations","uniformOrAttributeNames","foundLocations","getAttribLocation","getUniformLocation","shaderText","shader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","Texture","tilesPerTexture","dirtyTimeoutId","tilesPerRow","tileSize","lastLoadedIdx","loadedImages","skipedDirty","textures","trackedUrls","clearDirty","remove","imgUrl","coordinates","tileToRemove","getTileCoordinates","markDirty","getTextures","getCoordinates","Image","imgId","crossOrigin","onload","tileNumber","tilePosition","textureNumber","texture","createTexture","currentTexture","drawImage","row","drawAt","absolutePosition","localTileNumber","markDirtyNow","fromCanvas","toCtx","_texture","WebglAtlas","glUtils","atlas","utils","locations","sizeDirty","ATTRIBUTES_PER_PRIMITIVE","nodesFS","nodesVS","glContext","useProgram","uniform1f","enableVertexAttribArray","vertexPos","customAttributes","replacedNode","newTransform","bindBuffer","ARRAY_BUFFER","bufferData","DYNAMIC_DRAW","uniformMatrix4fv","uniform2f","screenSize","vertexAttribPointer","FLOAT","BYTES_PER_ELEMENT","nativeObject","refreshTexture","ensureAtlasTextureUpdated","drawArrays","TRIANGLES","deleteTexture","activeTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","uniform1i","webglGraphics","webglInputEvents","boundRect","mouseCapturedNode","mouseEnterCallback","mouseLeaveCallback","mouseDownCallback","mouseUpCallback","mouseMoveCallback","clickCallback","dblClickCallback","lastFound","lastUpdate","lastClickTime","invoke","updateBoundRect","getBoundingClientRect","clickTime","nodeAtClientPos","sameNode","startListen","mouseEnter","mouseLeave","click","dblClick","half","callbacksChain","parseColor","BYTES_PER_LINK","Uint32Array","linksFS","linksVS","storage","positions","colors","linkUi","extendedStorage","extendedPositions","extendedColors","ensureEnoughStorage","LINES","BYTES_PER_NODE","POINTS","Viva","lazyExtend","Graph","serializer","loadFromJSON","storeToJSON","operations","geom","intersectRect","webgl","generator","Input","Utils","Layout","constant","View","webglAtlas","webglImageNodeProgram","webglImage","_webglUtil","renderer","cssGraphics","svgNodeFactory","community","BrowserInfo","webpackAsyncContext","req","__webpack_require__","ids","webpackContext","webpackContextResolve","ReferenceError","__esModule","Constructor","_defineProperties","protoProps","staticProps","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","_getPrototypeOf","__proto__","subClass","superClass","sham","Proxy","Boolean","_typeof","assertThisInitialized","_setPrototypeOf","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","getProto","ns","def","definition","chunkId","all","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","doneFns","head","toStringTag","nmd","paths","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Context","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_inheritsLoose","_extends","isAbsolute","pathname","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueEqual","every","aValue","bValue","invariant","condition","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","canGo","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","newValue","changedBits","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","_this","emitter","_proto","nextProps","oldValue","_Component2","_this2","onUpdate","observedBits","_proto2","_objectWithoutPropertiesLoose","excluded","sourceKeys","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","RouterContext","HistoryContext","Lifecycle","onMount","prevProps","onUnmount","cacheCount","generatePath","compilePath","Redirect","computedMatch","matchPath","cacheKey","pathCache","regexp","Route","isEmptyChildren","createURL","staticHandler","methodName","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","BrowserRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","rest","ex","isModifiedEvent","isDuplicateNavigation","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","_defineProperty","ownKeys","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_superPropBase","_get","receiver","desc","_inherits","_isNativeReflectConstruct","_possibleConstructorReturn","_createSuper","_path","_excluded","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","SvgHome","title","titleId","viewBox","xmlns","_path2","_path3","_path4","SvgMoon","SvgPadlockUnlocked","SvgPadlock","_path5","_path6","_path7","_path8","_path9","SvgPeers","fillRule","clipRule","SvgSun","WebSocketTopic","SvgVisualizer","ServiceFactory","instanceCallback","_services","_instances","EventAggregator","subscriberId","_subscriptions","BrandHelper","_brandId","_brandConfiguration","theme","logo","banner","process","AsyncComponent","Breakpoint","_resize","resize","isVisible","calculateVisible","windowSize","innerWidth","aboveBelow","SIZE_BREAKPOINTS","FormatHelper","decimalPlaces","valueInMs","human","timeMoment","moment","formatted","postDate","_circle","_circle2","SvgHealthBad","SvgHealthGood","HealthIndicator","healthy","label","MicroGraph","_graphWidth","_graphHeight","graphWidth","graphHeight","calculateGraph","graphPoints","stroke","circle","graphPointCount","lastItems","circleX","circleY","lastY","xIncrement","Header","_authService","_metricsService","_nodeInfoExtendedSubscription","_publicNodeStatusSubscription","_databaseSizeMetricsSubscription","_gossipMetricsSubscription","isNetworkHealthy","isNodeHealthy","bps","bpsValues","memorySizeFormatted","memorySize","dbSizeTotalFormatted","dbSizeTotal","isLoggedIn","online","subscribe","PublicNodeStatus","NodeInfoExtended","iSize","memoryUsage","allData","nonNull","DatabaseSizeMetric","databaseSizes","dbSizeTotalFlattened","flat","GossipMetrics","new","bpsFormatted","unsubscribe","NavMenu","_themeService","logoSrc","isOpen","getLogoNavigation","NavPanel","fullWidth","middle","hidden","startsWith","icon","function","SvgBannerCurve","xmlnsXlink","isolation","SvgConfirmation","SvgDbIcon","strokeLinecap","strokeLinejoin","SvgMemory","SvgMilestone","SvgPruning","SvgUptime","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_toConsumableArray","Bech32","humanReadablePart","encode5BitArray","to5Bit","data5Bit","checksum","createChecksum","SEPARATOR","CHARSET","bech","decodeTo5BitArray","from5Bit","separatorPos","verifyChecksum","convertBits","fiveBit","bech32Text","expanded","humanReadablePartExpand","polymod","chk","GENERATOR","fromBits","toBits","padding","maxV","Blake2b","outlen","_v","_m","compress","BLAKE2B_IV32","keylen","b2bGet32","b2bG","SIGMA82","o0","o1","b0","ix","iy","x0","y0","add64AA","add64AC","xor0","xor1","b2b","SIZE_256","final","SIZE_512","SIGMA8","Curl","rounds","NUMBER_OF_ROUNDS","_state","Int8Array","STATE_LENGTH","_rounds","HASH_LENGTH","trits","curlState","stateCopy","lastVal","nextVal","TRUTH_TABLE","Sha1","blocks","h0","h1","h2","h3","h4","hBytes","lastByteIndex","finalized","hashed","_SHIFT","trunc","finalize","_EXTRA","Sha256","_blocks","SIZE_224","_h0","_h1","_h2","_h3","_h4","_h5","_h6","_h7","_bits","_block","_start","_bytes","_hBytes","_lastByteIndex","_finalized","_hashed","_first","SHIFT","h5","h6","h7","EXTRA","s0","s1","maj","t1","Sha512","SIZE_384","_h0h","_h0l","_h1h","_h1l","_h2h","_h2l","_h3h","_h3l","_h4h","_h4l","_h5h","_h5l","_h6h","_h6l","_h7h","_h7l","h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","s0h","s0l","s1h","s1l","c3","c4","abh","abl","dah","dal","cdh","cdl","bch","bcl","majh","majl","t1h","t1l","t2h","t2l","chh","chl","RandomHelper","randomPolyfill","randomBytes","crypto","getRandomValues","Base32","base32","_ALPHABET","Base58","base58","zeroes","b256","_ALPHABET_REVERSE","b58","Base64","getLengths","calcByteLength","_REVERSE_LOOKUP","_LOOKUP","tripletToBase64","BigIntHelper","v0","v1","BIG_32","BIG_32_MASK","read8","generate","Converter","startIndex","utf8","charcode","hex","buildHexLookups","ENCODE_LOOKUP","sizeof","DECODE_LOOKUP","bytesToHex","bytesToUtf8","hexToBytes","padStart","binary","decode","_storage","WriteStream","CHUNK_SIZE","_writeIndex","writeIndex","expand","additional","newArr","HmacSha256","_sha256","_oKeyPad","iKeyPad","innerHash","finalSha256","HmacSha512","_sha512","finalSha512","Pbkdf2","salt","deriveKey","pass","sum256","macLength","sumFunc","DK","block1","destPos","english","Bip39","wordlistData","joiningChar","_wordlist","_joiningChar","entropyToMnemonic","entropy","setWordList","bin","entropyChecksumBits","mnemonic","wordIndexBits","wordIndex","mnemonicBytes","normalize","sha512","words","dividerIndex","entropyBits","checksumBits","newChecksum","ArrayHelper","BIG_1_SHIFTL_20","BIG_1_SHIFTL_24","BIG_1_SHIFTL_25","BIG_ARR","BIG_38","BIG_666643","BIG_470296","BIG_654183","BIG_997805","BIG_136657","BIG_683901","BIG_2097151","BIG_8388607","FieldElement","Int32Array","FIELD_ELEMENT_SIZE","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","f12","f32","f52","f72","f92","g0","g1","g2","g3","g4","g5","g6","g7","g8","g9","g119","g219","g319","g419","g519","g619","g719","g819","g919","h8","h9","combine","c0","c5","c6","c7","c8","c9","internalSquare","f02","f22","f42","f62","f538","f619","f738","f819","f938","toBytes","t0","t2","t3","CachedGroupElement","yPlusX","yMinusX","T2d","CompletedGroupElement","xy2d","PreComputedGroupElement","cMove","minusT","bNegative","negative","bAbs","CONST_BASE","equal","CONST_D","CONST_D2","CONST_SQRT_M1","CONST_ORDER","CONST_BI","ProjectiveGroupElement","square2","recip","invert","aSlide","bSlide","ExtendedGroupElement","A2","slide","toCached","double","toExtended","mixedAdd","mixedSub","toProjective","cachedGroupElement","cacheGroupElement","projectiveGroupElement","v3","vxx","fromBytes","pow22523","tmpX","tmp2","isNonZero","selectPoint","xBytes","yBytes","zBytes","scalarReduce","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","Ed25519","privateKey","privateKeyFromSeed","SEED_SIZE","publicKey","publicKeyFromPrivateKey","scalarMultBase","publicKeyBytes","PRIVATE_KEY_SIZE","digest1","expandedSecretKey","messageDigest","messageDigestReduced","encodedR","hramDigest","hramDigestReduced","a0","a3","a4","a5","a6","a7","a8","a9","a10","a11","b3","b4","b5","b6","b7","b8","b9","b10","b11","c10","c11","scalarMulAdd","signature","SIGNATURE_SIZE","sig","PUBLIC_KEY_SIZE","hReduced","scalar","scalarMinimal","doubleScalarMultVartime","checkR","_graphElement","dataEqual","series","caption","setElement","textAnchor","axis","baseVal","seriesMaxLength","actualSeriesValues","maxItems","yScale","barWidth","axisSpacing","axisLabelWidth","timeInterval","endTime","numTimeEntries","timeMarkers","timePerInterval","dt","marginLeft","getHours","getMinutes","getSeconds","calculatePath","scaledVal","pathSegments","tooltipContent","tooltip","onMouseEnter","visibility","onMouseLeave","SYNC_STATUS_CAPTION","InfoPanel","latestFinalizedSlot","latestCommitmentSlot","slots","backgroundStyle","SvgEyeClosed","SvgEye","DataHelper","numberString","chunks","charsLength","separated","DataView","getUint32","peer","address","multiAddresses","extractAddress","addr","extractIp4","extractIp6","extractDns","peers","connected","localeCompare","PeersSummaryPanel","_settingsService","_peerMetricsSubscription","_syncStatusSubscription","blindMode","getBlindMode","PeerMetrics","handleData","toggleBlindMode","sortedPeers","sortPeers","formatPeerAddress","setBlindMode","Home","_networkMetricsSubscription","_databaseSizeSubscription","_networkId","nodeConfigService","getNetworkId","displayVersion","displayLatestVersion","pruningEpoch","rbps","referencedRate","memory","dbSizePermanentFormatted","dbSizePrunableFormatted","dbSizeTxRetainerFormatted","uptime","lastReceivedBpsTime","bpsIncoming","bpsOutgoing","bannerSrc","getBanner","nodeAlias","getConfiguration","checkVersion","latestVersion","SyncStatus","NetworkMetrics","blocksPerSecond","confirmedBlocksPerSecond","confirmationRate","incoming","outgoing","dbSizeMetric","permanent","prunable","txRetainer","currentVersion","compareVersions","partsFirst","partsSecond","firstAlphabet","secondAlphabet","firstIndex","codePointAt","secondIndex","Spinner","compact","Login","user","isBusy","redirect","autoComplete","onChange","onKeyDown","login","success","_createForOfIteratorHelper","allowArrayLike","_e","normalCompletion","didErr","_e2","SvgChevronLeft","ClipboardHelper","textArea","fontSize","border","margin","yPosition","pageYOffset","select","execCommand","SvgCopy","BlockButton","active","buttonType","activate","labelPosition","Peer","isConnected","receivedPacketsDiff","sentPacketsDiff","relation","lastUpdateTime","gossipMetrics","receivedPacketsTotal","sentPacketsTotal","allDataPeers","find","packetsReceived","packetsSent","SvgChevronRight","Dialog","actions","Peers","dialogPeerAddress","dialogPeerAlias","finalPeerIds","originalAddress","dialogType","dialogIsEdit","dialogPeerId","dialogStatus","dialogBusy","dialogPeerIdOriginal","peerConfigure","peerDelete","placeholder","tangleService","endsWith","peerAdd","SvgClose","SvgPause","SvgPlay","Visualizer","_graph","_renderer","_graphics","_vizualizerService","_dashboardConfigService","_tangleService","_enteredVertexId","tips","accepted","confirmed","transactions","vertex","op","updateVertex","deleteVertex","counts","styleAllLinks","clearRect","setupGraph","toggleActivity","vertexState","blockStateTitle","payloadTitle","selectNode","fullId","calculateBlockLink","rel","header","issuerId","highestSupportedVersion","protocolParametersHash","graphElement","stableThreshold","calculateSize","STATE_COLOR_MAP","calculateVertexState","THEME_COLOR_LINKS","open","connectedLinkStyle","shortId","updateNodeUI","parents","added","parent","isValidationBlock","isTip","isFinalized","isConfirmed","isBasicBlockSignedTransaction","isAccepted","isSelected","startNode","nodeCallback","linkCallback","seenNodes","pointer","linkNode","BLOCK_STATE_TITLE_MAP","calculateBlockState","explorerURL","getExplorerURL","vertexId","highlight","dfsIterator","COLOR_LINK_CHILDREN","COLOR_LINK_PARENTS","unknown","transaction","validation","tip","dark","light","App","_storageService","_alias","_latestCommitmentSlot","_latestFinalizedSlot","_lastStatus","_statusTimer","_tokenExpiryTimer","updateTitle","validateTokenPeriodically","publish","setInterval","clearInterval","clearTokenExpiryInterval","sections","logout","endSections","jwt","expiryTimestamp","getTokenExpiry","expiryDate","refreshTokenDate","initialize","decodedToken","atob","FetchHelper","baseUrl","headers","controller","AbortController","timerId","abort","fetch","signal","status","json","statusText","urlParams","AuthService","_jwt","_csrf","cookie","csrf","storageService","protocol","host","response","save","Authorization","DashboardConfigService","_explorerURL","getExplorerURLBackend","buildAuthHeaders","explorerUrl","LocalStorageService","localStorage","getItem","setItem","removeItem","rootKey","keysToRemove","MetricsService","_webSocketService","_webSocketSubscriptions","_cached","topics","topic","isPublic","triggerCallbacks","singleCallback","multipleCallback","subscriptionId","subscriptionIdx","findIndex","subscriber","NodeConfigService","setNetworkId","networkName","networkId","SessionStorageService","sessionStorage","SettingsService","_blindMode","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","ClientError","httpStatus","SingleNodeClient","endpoint","_endpoint","_basePath","_coreApiPath","_managementApiPath","_timeout","_userName","_password","_headers","basePath","userName","authorization","fetchJson","blockId","multiAddress","peerId","requestData","fetchWithTimeout","responseData","errorMessage","errorCode","finalHeaders","userPass","queryParams","TangleService","_nodeInfo","client","buildClient","peerAddress","peerAlias","ThemeService","_theme","currentTheme","classList","VisualizerService","_vertices","_verticesOrder","_counts","_verticesLimit","_vertexCallback","_countsCallback","vertexCallback","countsCallback","updateSyncStatus","VisualizerVertex","updateVertices","VisualizerTipInfo","updateTipInfo","VisualizerBlockStateInfo","updateBlockStateInfo","subscription","slot","vert","shortVertId","checkLimit","computeSlotIndex","blockState","isBasicBlockTaggedData","isBasicBlockCandidacyAnnouncement","updateVertexBlockStateInfo","deleteId","removeVertex","updated","WebSocketService","_reconnectTimer","_lastMessage","_webSocket","requiresAuth","isSubscribed","subs","readyState","WebSocket","OPEN","subscribeTopic","connectSocket","unsubscribeTopic","clearTimer","disconnectSocket","uri","hostname","port","onopen","onclose","handleMessage","reconnect","close","topicId","arrayBuf","send","initServices","register","settingsService","authService","webSocketService","themeService","dashboardConfigService","metricsService","resubscribe","brandConfiguration"],"sourceRoot":""} \ No newline at end of file diff --git a/pkg/dashboard/frontend/static/js/main.9a94a724.js b/pkg/dashboard/frontend/static/js/main.a913c086.js similarity index 84% rename from pkg/dashboard/frontend/static/js/main.9a94a724.js rename to pkg/dashboard/frontend/static/js/main.a913c086.js index f83df3d..b8aa847 100644 --- a/pkg/dashboard/frontend/static/js/main.9a94a724.js +++ b/pkg/dashboard/frontend/static/js/main.a913c086.js @@ -1,3 +1,3 @@ -/*! For license information please see main.9a94a724.js.LICENSE.txt */ -!function(){var e={9337:function(e){n.removeEventListener=function(e,n,s,u){return(t=t||(document.addEventListener?{add:r,rm:i}:{add:a,rm:o})).rm(e,n,s,u)},n.addEventListener=n,e.exports=n;var t=null;function n(e,n,s,u){return(t=t||(document.addEventListener?{add:r,rm:i}:{add:a,rm:o})).add(e,n,s,u)}function r(e,t,n,r){e.addEventListener(t,n,r)}function i(e,t,n,r){e.removeEventListener(t,n,r)}function a(e,t,n,r){if(r)throw new Error("cannot useCapture in oldIE");e.attachEvent("on"+t,n)}function o(e,t,n,r){e.detachEvent("on"+t,n)}},2009:function(e,t){"use strict";t.byteLength=function(e){var t=u(e),n=t[0],r=t[1];return 3*(n+r)/4-r},t.toByteArray=function(e){var t,n,a=u(e),o=a[0],s=a[1],l=new i(function(e,t,n){return 3*(t+n)/4-n}(0,o,s)),c=0,d=s>0?o-4:o;for(n=0;n>16&255,l[c++]=t>>8&255,l[c++]=255&t;2===s&&(t=r[e.charCodeAt(n)]<<2|r[e.charCodeAt(n+1)]>>4,l[c++]=255&t);1===s&&(t=r[e.charCodeAt(n)]<<10|r[e.charCodeAt(n+1)]<<4|r[e.charCodeAt(n+2)]>>2,l[c++]=t>>8&255,l[c++]=255&t);return l},t.fromByteArray=function(e){for(var t,r=e.length,i=r%3,a=[],o=16383,s=0,u=r-i;su?u:s+o));1===i?(t=e[r-1],a.push(n[t>>2]+n[t<<4&63]+"==")):2===i&&(t=(e[r-2]<<8)+e[r-1],a.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"="));return a.join("")};for(var n=[],r=[],i="undefined"!==typeof Uint8Array?Uint8Array:Array,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,s=a.length;o0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function l(e,t,r){for(var i,a,o=[],s=t;s>18&63]+n[a>>12&63]+n[a>>6&63]+n[63&a]);return o.join("")}r["-".charCodeAt(0)]=62,r["_".charCodeAt(0)]=63},9523:function(e,t,n){var r;e=n.nmd(e);var i=function(e){"use strict";var t=1e7,n=9007199254740992,r=f(n),a="0123456789abcdefghijklmnopqrstuvwxyz",o="function"===typeof BigInt;function s(e,t,n,r){return"undefined"===typeof e?s[0]:"undefined"!==typeof t&&(10!==+t||n)?H(e,t,n,r):X(e)}function u(e,t){this.value=e,this.sign=t,this.isSmall=!1}function l(e){this.value=e,this.sign=e<0,this.isSmall=!0}function c(e){this.value=e}function d(e){return-n0?Math.floor(e):Math.ceil(e)}function y(e,n){var r,i,a=e.length,o=n.length,s=new Array(a),u=0,l=t;for(i=0;i=l?1:0,s[i]=r-u*l;for(;i0&&s.push(u),s}function g(e,t){return e.length>=t.length?y(e,t):y(t,e)}function w(e,n){var r,i,a=e.length,o=new Array(a),s=t;for(i=0;i0;)o[i++]=n%s,n=Math.floor(n/s);return o}function b(e,n){var r,i,a=e.length,o=n.length,s=new Array(a),u=0,l=t;for(r=0;r0;)o[i++]=u%s,u=Math.floor(u/s);return o}function S(e,t){for(var n=[];t-- >0;)n.push(0);return n.concat(e)}function E(e,t){var n=Math.max(e.length,t.length);if(n<=30)return k(e,t);n=Math.ceil(n/2);var r=e.slice(n),i=e.slice(0,n),a=t.slice(n),o=t.slice(0,n),s=E(i,o),u=E(r,a),l=E(g(i,r),g(o,a)),c=g(g(s,S(b(b(l,s),u),n)),S(u,2*n));return p(c),c}function C(e,n,r){return new u(e=0;--n)i=(a=1e7*i+e[n])-(r=v(a/t))*t,s[n]=0|r;return[s,0|i]}function M(e,n){var r,i=X(n);if(o)return[new c(e.value/i.value),new c(e.value%i.value)];var a,d=e.value,y=i.value;if(0===y)throw new Error("Cannot divide by zero");if(e.isSmall)return i.isSmall?[new l(v(d/y)),new l(d%y)]:[s[0],e];if(i.isSmall){if(1===y)return[e,s[0]];if(-1==y)return[e.negate(),s[0]];var g=Math.abs(y);if(g=0;i--){for(r=f-1,g[i+d]!==v&&(r=Math.floor((g[i+d]*f+g[i+d-1])/v)),a=0,o=0,u=w.length,s=0;sl&&(a=(a+1)*f),r=Math.ceil(a/o);do{if(P(s=x(n,r),d)<=0)break;r--}while(r);c.push(r),d=b(d,s)}return c.reverse(),[h(c),h(d)]}(d,y),a=r[0];var k=e.sign!==i.sign,S=r[1],E=e.sign;return"number"===typeof a?(k&&(a=-a),a=new l(a)):a=new u(a,k),"number"===typeof S?(E&&(S=-S),S=new l(S)):S=new u(S,E),[a,S]}function P(e,t){if(e.length!==t.length)return e.length>t.length?1:-1;for(var n=e.length-1;n>=0;n--)if(e[n]!==t[n])return e[n]>t[n]?1:-1;return 0}function L(e){var t=e.abs();return!t.isUnit()&&(!!(t.equals(2)||t.equals(3)||t.equals(5))||!(t.isEven()||t.isDivisibleBy(3)||t.isDivisibleBy(5))&&(!!t.lesser(49)||void 0))}function T(e,t){for(var n,r,a,o=e.prev(),s=o,u=0;s.isEven();)s=s.divide(2),u++;e:for(r=0;r=0?r=b(e,t):(r=b(t,e),n=!n),"number"===typeof(r=h(r))?(n&&(r=-r),new l(r)):new u(r,n)}(n,r,this.sign)},u.prototype.minus=u.prototype.subtract,l.prototype.subtract=function(e){var t=X(e),n=this.value;if(n<0!==t.sign)return this.add(t.negate());var r=t.value;return t.isSmall?new l(n-r):_(r,Math.abs(n),n>=0)},l.prototype.minus=l.prototype.subtract,c.prototype.subtract=function(e){return new c(this.value-X(e).value)},c.prototype.minus=c.prototype.subtract,u.prototype.negate=function(){return new u(this.value,!this.sign)},l.prototype.negate=function(){var e=this.sign,t=new l(-this.value);return t.sign=!e,t},c.prototype.negate=function(){return new c(-this.value)},u.prototype.abs=function(){return new u(this.value,!1)},l.prototype.abs=function(){return new l(Math.abs(this.value))},c.prototype.abs=function(){return new c(this.value>=0?this.value:-this.value)},u.prototype.multiply=function(e){var n,r,i,a=X(e),o=this.value,l=a.value,c=this.sign!==a.sign;if(a.isSmall){if(0===l)return s[0];if(1===l)return this;if(-1===l)return this.negate();if((n=Math.abs(l))0?E(o,l):k(o,l),c)},u.prototype.times=u.prototype.multiply,l.prototype._multiplyBySmall=function(e){return d(e.value*this.value)?new l(e.value*this.value):C(Math.abs(e.value),f(Math.abs(this.value)),this.sign!==e.sign)},u.prototype._multiplyBySmall=function(e){return 0===e.value?s[0]:1===e.value?this:-1===e.value?this.negate():C(Math.abs(e.value),this.value,this.sign!==e.sign)},l.prototype.multiply=function(e){return X(e)._multiplyBySmall(this)},l.prototype.times=l.prototype.multiply,c.prototype.multiply=function(e){return new c(this.value*X(e).value)},c.prototype.times=c.prototype.multiply,u.prototype.square=function(){return new u(N(this.value),!1)},l.prototype.square=function(){var e=this.value*this.value;return d(e)?new l(e):new u(N(f(Math.abs(this.value))),!1)},c.prototype.square=function(e){return new c(this.value*this.value)},u.prototype.divmod=function(e){var t=M(this,e);return{quotient:t[0],remainder:t[1]}},c.prototype.divmod=l.prototype.divmod=u.prototype.divmod,u.prototype.divide=function(e){return M(this,e)[0]},c.prototype.over=c.prototype.divide=function(e){return new c(this.value/X(e).value)},l.prototype.over=l.prototype.divide=u.prototype.over=u.prototype.divide,u.prototype.mod=function(e){return M(this,e)[1]},c.prototype.mod=c.prototype.remainder=function(e){return new c(this.value%X(e).value)},l.prototype.remainder=l.prototype.mod=u.prototype.remainder=u.prototype.mod,u.prototype.pow=function(e){var t,n,r,i=X(e),a=this.value,o=i.value;if(0===o)return s[1];if(0===a)return s[0];if(1===a)return s[1];if(-1===a)return i.isEven()?s[1]:s[-1];if(i.sign)return s[0];if(!i.isSmall)throw new Error("The exponent "+i.toString()+" is too large.");if(this.isSmall&&d(t=Math.pow(a,o)))return new l(v(t));for(n=this,r=s[1];!0&o&&(r=r.times(n),--o),0!==o;)o/=2,n=n.square();return r},l.prototype.pow=u.prototype.pow,c.prototype.pow=function(e){var t=X(e),n=this.value,r=t.value,i=BigInt(0),a=BigInt(1),o=BigInt(2);if(r===i)return s[1];if(n===i)return s[0];if(n===a)return s[1];if(n===BigInt(-1))return t.isEven()?s[1]:s[-1];if(t.isNegative())return new c(i);for(var u=this,l=s[1];(r&a)===a&&(l=l.times(u),--r),r!==i;)r/=o,u=u.square();return l},u.prototype.modPow=function(e,t){if(e=X(e),(t=X(t)).isZero())throw new Error("Cannot take modPow with modulus 0");var n=s[1],r=this.mod(t);for(e.isNegative()&&(e=e.multiply(s[-1]),r=r.modInv(t));e.isPositive();){if(r.isZero())return s[0];e.isOdd()&&(n=n.multiply(r).mod(t)),e=e.divide(2),r=r.square().mod(t)}return n},c.prototype.modPow=l.prototype.modPow=u.prototype.modPow,u.prototype.compareAbs=function(e){var t=X(e),n=this.value,r=t.value;return t.isSmall?1:P(n,r)},l.prototype.compareAbs=function(e){var t=X(e),n=Math.abs(this.value),r=t.value;return t.isSmall?n===(r=Math.abs(r))?0:n>r?1:-1:-1},c.prototype.compareAbs=function(e){var t=this.value,n=X(e).value;return(t=t>=0?t:-t)===(n=n>=0?n:-n)?0:t>n?1:-1},u.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=X(e),n=this.value,r=t.value;return this.sign!==t.sign?t.sign?1:-1:t.isSmall?this.sign?-1:1:P(n,r)*(this.sign?-1:1)},u.prototype.compareTo=u.prototype.compare,l.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=X(e),n=this.value,r=t.value;return t.isSmall?n==r?0:n>r?1:-1:n<0!==t.sign?n<0?-1:1:n<0?1:-1},l.prototype.compareTo=l.prototype.compare,c.prototype.compare=function(e){if(e===1/0)return-1;if(e===-1/0)return 1;var t=this.value,n=X(e).value;return t===n?0:t>n?1:-1},c.prototype.compareTo=c.prototype.compare,u.prototype.equals=function(e){return 0===this.compare(e)},c.prototype.eq=c.prototype.equals=l.prototype.eq=l.prototype.equals=u.prototype.eq=u.prototype.equals,u.prototype.notEquals=function(e){return 0!==this.compare(e)},c.prototype.neq=c.prototype.notEquals=l.prototype.neq=l.prototype.notEquals=u.prototype.neq=u.prototype.notEquals,u.prototype.greater=function(e){return this.compare(e)>0},c.prototype.gt=c.prototype.greater=l.prototype.gt=l.prototype.greater=u.prototype.gt=u.prototype.greater,u.prototype.lesser=function(e){return this.compare(e)<0},c.prototype.lt=c.prototype.lesser=l.prototype.lt=l.prototype.lesser=u.prototype.lt=u.prototype.lesser,u.prototype.greaterOrEquals=function(e){return this.compare(e)>=0},c.prototype.geq=c.prototype.greaterOrEquals=l.prototype.geq=l.prototype.greaterOrEquals=u.prototype.geq=u.prototype.greaterOrEquals,u.prototype.lesserOrEquals=function(e){return this.compare(e)<=0},c.prototype.leq=c.prototype.lesserOrEquals=l.prototype.leq=l.prototype.lesserOrEquals=u.prototype.leq=u.prototype.lesserOrEquals,u.prototype.isEven=function(){return 0===(1&this.value[0])},l.prototype.isEven=function(){return 0===(1&this.value)},c.prototype.isEven=function(){return(this.value&BigInt(1))===BigInt(0)},u.prototype.isOdd=function(){return 1===(1&this.value[0])},l.prototype.isOdd=function(){return 1===(1&this.value)},c.prototype.isOdd=function(){return(this.value&BigInt(1))===BigInt(1)},u.prototype.isPositive=function(){return!this.sign},l.prototype.isPositive=function(){return this.value>0},c.prototype.isPositive=l.prototype.isPositive,u.prototype.isNegative=function(){return this.sign},l.prototype.isNegative=function(){return this.value<0},c.prototype.isNegative=l.prototype.isNegative,u.prototype.isUnit=function(){return!1},l.prototype.isUnit=function(){return 1===Math.abs(this.value)},c.prototype.isUnit=function(){return this.abs().value===BigInt(1)},u.prototype.isZero=function(){return!1},l.prototype.isZero=function(){return 0===this.value},c.prototype.isZero=function(){return this.value===BigInt(0)},u.prototype.isDivisibleBy=function(e){var t=X(e);return!t.isZero()&&(!!t.isUnit()||(0===t.compareAbs(2)?this.isEven():this.mod(t).isZero()))},c.prototype.isDivisibleBy=l.prototype.isDivisibleBy=u.prototype.isDivisibleBy,u.prototype.isPrime=function(t){var n=L(this);if(n!==e)return n;var r=this.abs(),a=r.bitLength();if(a<=64)return T(r,[2,3,5,7,11,13,17,19,23,29,31,37]);for(var o=Math.log(2)*a.toJSNumber(),s=Math.ceil(!0===t?2*Math.pow(o,2):o),u=[],l=0;l-n?new l(e-1):new u(r,!0)},c.prototype.prev=function(){return new c(this.value-BigInt(1))};for(var j=[1];2*j[j.length-1]<=t;)j.push(2*j[j.length-1]);var I=j.length,R=j[I-1];function A(e){return Math.abs(e)<=t}function D(e,t,n){t=X(t);for(var r=e.isNegative(),a=t.isNegative(),o=r?e.not():e,s=a?t.not():t,u=0,l=0,c=null,d=null,f=[];!o.isZero()||!s.isZero();)u=(c=M(o,R))[1].toJSNumber(),r&&(u=R-1-u),l=(d=M(s,R))[1].toJSNumber(),a&&(l=R-1-l),o=c[0],s=d[0],f.push(n(u,l));for(var h=0!==n(r?1:0,a?1:0)?i(-1):i(0),p=f.length-1;p>=0;p-=1)h=h.multiply(R).add(i(f[p]));return h}u.prototype.shiftLeft=function(e){var t=X(e).toJSNumber();if(!A(t))throw new Error(String(t)+" is too large for shifting.");if(t<0)return this.shiftRight(-t);var n=this;if(n.isZero())return n;for(;t>=I;)n=n.multiply(R),t-=I-1;return n.multiply(j[t])},c.prototype.shiftLeft=l.prototype.shiftLeft=u.prototype.shiftLeft,u.prototype.shiftRight=function(e){var t,n=X(e).toJSNumber();if(!A(n))throw new Error(String(n)+" is too large for shifting.");if(n<0)return this.shiftLeft(-n);for(var r=this;n>=I;){if(r.isZero()||r.isNegative()&&r.isUnit())return r;r=(t=M(r,R))[1].isNegative()?t[0].prev():t[0],n-=I-1}return(t=M(r,j[n]))[1].isNegative()?t[0].prev():t[0]},c.prototype.shiftRight=l.prototype.shiftRight=u.prototype.shiftRight,u.prototype.not=function(){return this.negate().prev()},c.prototype.not=l.prototype.not=u.prototype.not,u.prototype.and=function(e){return D(this,e,(function(e,t){return e&t}))},c.prototype.and=l.prototype.and=u.prototype.and,u.prototype.or=function(e){return D(this,e,(function(e,t){return e|t}))},c.prototype.or=l.prototype.or=u.prototype.or,u.prototype.xor=function(e){return D(this,e,(function(e,t){return e^t}))},c.prototype.xor=l.prototype.xor=u.prototype.xor;var z=1<<30;function B(e){var n=e.value,r="number"===typeof n?n|z:"bigint"===typeof n?n|BigInt(z):n[0]+n[1]*t|1073758208;return r&-r}function U(e,t){if(t.compareTo(e)<=0){var n=U(e,t.square(t)),r=n.p,a=n.e,o=r.multiply(t);return o.compareTo(e)<=0?{p:o,e:2*a+1}:{p:r,e:2*a}}return{p:i(1),e:0}}function F(e,t){return e=X(e),t=X(t),e.greater(t)?e:t}function Y(e,t){return e=X(e),t=X(t),e.lesser(t)?e:t}function V(e,t){if(e=X(e).abs(),t=X(t).abs(),e.equals(t))return e;if(e.isZero())return t;if(t.isZero())return e;for(var n,r,i=s[1];e.isEven()&&t.isEven();)n=Y(B(e),B(t)),e=e.divide(n),t=t.divide(n),i=i.multiply(n);for(;e.isEven();)e=e.divide(B(e));do{for(;t.isEven();)t=t.divide(B(t));e.greater(t)&&(r=t,t=e,e=r),t=t.subtract(e)}while(!t.isZero());return i.isUnit()?e:e.multiply(i)}u.prototype.bitLength=function(){var e=this;return e.compareTo(i(0))<0&&(e=e.negate().subtract(i(1))),0===e.compareTo(i(0))?i(0):i(U(e,i(2)).e).add(i(1))},c.prototype.bitLength=l.prototype.bitLength=u.prototype.bitLength;var H=function(e,t,n,r){n=n||a,e=String(e),r||(e=e.toLowerCase(),n=n.toLowerCase());var i,o=e.length,s=Math.abs(t),u={};for(i=0;i=s)){if("1"===d&&1===s)continue;throw new Error(d+" is not a valid digit in base "+t+".")}}t=X(t);var l=[],c="-"===e[0];for(i=c?1:0;i"!==e[i]&&i=0;r--)i=i.add(e[r].times(a)),a=a.times(t);return n?i.negate():i}function q(e,t){if((t=i(t)).isZero()){if(e.isZero())return{value:[0],isNegative:!1};throw new Error("Cannot convert nonzero numbers to base 0.")}if(t.equals(-1)){if(e.isZero())return{value:[0],isNegative:!1};if(e.isNegative())return{value:[].concat.apply([],Array.apply(null,Array(-e.toJSNumber())).map(Array.prototype.valueOf,[1,0])),isNegative:!1};var n=Array.apply(null,Array(e.toJSNumber()-1)).map(Array.prototype.valueOf,[0,1]);return n.unshift([1]),{value:[].concat.apply([],n),isNegative:!1}}var r=!1;if(e.isNegative()&&t.isPositive()&&(r=!0,e=e.abs()),t.isUnit())return e.isZero()?{value:[0],isNegative:!1}:{value:Array.apply(null,Array(e.toJSNumber())).map(Number.prototype.valueOf,1),isNegative:r};for(var a,o=[],s=e;s.isNegative()||s.compareAbs(t)>=0;){a=s.divmod(t),s=a.quotient;var u=a.remainder;u.isNegative()&&(u=t.minus(u).abs(),s=s.next()),o.push(u.toJSNumber())}return o.push(s.toJSNumber()),{value:o.reverse(),isNegative:r}}function G(e,t,n){var r=q(e,t);return(r.isNegative?"-":"")+r.value.map((function(e){return function(e,t){return e<(t=t||a).length?t[e]:"<"+e+">"}(e,n)})).join("")}function Z(e){if(d(+e)){var t=+e;if(t===v(t))return o?new c(BigInt(t)):new l(t);throw new Error("Invalid integer: "+e)}var n="-"===e[0];n&&(e=e.slice(1));var r=e.split(/e/i);if(r.length>2)throw new Error("Invalid integer: "+r.join("e"));if(2===r.length){var i=r[1];if("+"===i[0]&&(i=i.slice(1)),(i=+i)!==v(i)||!d(i))throw new Error("Invalid integer: "+i+" is not a valid exponent.");var a=r[0],s=a.indexOf(".");if(s>=0&&(i-=a.length-s-1,a=a.slice(0,s)+a.slice(s+1)),i<0)throw new Error("Cannot include negative exponent part for integers");e=a+=new Array(i+1).join("0")}if(!/^([0-9][0-9]*)$/.test(e))throw new Error("Invalid integer: "+e);if(o)return new c(BigInt(n?"-"+e:e));for(var f=[],h=e.length,m=h-7;h>0;)f.push(+e.slice(m,h)),(m-=7)<0&&(m=0),h-=7;return p(f),new u(f,n)}function X(e){return"number"===typeof e?function(e){if(o)return new c(BigInt(e));if(d(e)){if(e!==v(e))throw new Error(e+" is not an integer.");return new l(e)}return Z(e.toString())}(e):"string"===typeof e?Z(e):"bigint"===typeof e?new c(e):e}u.prototype.toArray=function(e){return q(this,e)},l.prototype.toArray=function(e){return q(this,e)},c.prototype.toArray=function(e){return q(this,e)},u.prototype.toString=function(t,n){if(t===e&&(t=10),10!==t||n)return G(this,t,n);for(var r,i=this.value,a=i.length,o=String(i[--a]);--a>=0;)r=String(i[a]),o+="0000000".slice(r.length)+r;return(this.sign?"-":"")+o},l.prototype.toString=function(t,n){return t===e&&(t=10),10!=t||n?G(this,t,n):String(this.value)},c.prototype.toString=l.prototype.toString,c.prototype.toJSON=u.prototype.toJSON=l.prototype.toJSON=function(){return this.toString()},u.prototype.valueOf=function(){return parseInt(this.toString(),10)},u.prototype.toJSNumber=u.prototype.valueOf,l.prototype.valueOf=function(){return this.value},l.prototype.toJSNumber=l.prototype.valueOf,c.prototype.valueOf=c.prototype.toJSNumber=function(){return parseInt(this.toString(),10)};for(var $=0;$<1e3;$++)s[$]=X($),$>0&&(s[-$]=X(-$));return s.one=s[1],s.zero=s[0],s.minusOne=s[-1],s.max=F,s.min=Y,s.gcd=V,s.lcm=function(e,t){return e=X(e).abs(),t=X(t).abs(),e.divide(V(e,t)).multiply(t)},s.isInstance=function(e){return e instanceof u||e instanceof l||e instanceof c},s.randBetween=function(e,n,r){e=X(e),n=X(n);var i=r||Math.random,a=Y(e,n),o=F(e,n).subtract(a).add(1);if(o.isSmall)return a.add(Math.floor(i()*o));for(var u=q(o,t).value,l=[],c=!0,d=0;dd)throw new RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,h.prototype),t}function h(e,t,n){if("number"===typeof e){if("string"===typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return v(e)}return p(e,t,n)}function p(e,t,n){if("string"===typeof e)return function(e,t){"string"===typeof t&&""!==t||(t="utf8");if(!h.isEncoding(t))throw new TypeError("Unknown encoding: "+t);var n=0|b(e,t),r=f(n),i=r.write(e,t);i!==n&&(r=r.slice(0,i));return r}(e,t);if(ArrayBuffer.isView(e))return function(e){if(ee(e,Uint8Array)){var t=new Uint8Array(e);return g(t.buffer,t.byteOffset,t.byteLength)}return y(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(ee(e,ArrayBuffer)||e&&ee(e.buffer,ArrayBuffer))return g(e,t,n);if("undefined"!==typeof SharedArrayBuffer&&(ee(e,SharedArrayBuffer)||e&&ee(e.buffer,SharedArrayBuffer)))return g(e,t,n);if("number"===typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');var r=e.valueOf&&e.valueOf();if(null!=r&&r!==e)return h.from(r,t,n);var i=function(e){if(h.isBuffer(e)){var t=0|w(e.length),n=f(t);return 0===n.length||e.copy(n,0,0,t),n}if(void 0!==e.length)return"number"!==typeof e.length||te(e.length)?f(0):y(e);if("Buffer"===e.type&&Array.isArray(e.data))return y(e.data)}(e);if(i)return i;if("undefined"!==typeof Symbol&&null!=Symbol.toPrimitive&&"function"===typeof e[Symbol.toPrimitive])return h.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function m(e){if("number"!==typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function v(e){return m(e),f(e<0?0:0|w(e))}function y(e){for(var t=e.length<0?0:0|w(e.length),n=f(t),r=0;r=d)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+d.toString(16)+" bytes");return 0|e}function b(e,t){if(h.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||ee(e,ArrayBuffer))return e.byteLength;if("string"!==typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var n=e.length,r=arguments.length>2&&!0===arguments[2];if(!r&&0===n)return 0;for(var i=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return K(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return J(e).length;default:if(i)return r?-1:K(e).length;t=(""+t).toLowerCase(),i=!0}}function _(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,n);case"utf8":case"utf-8":return L(this,t,n);case"ascii":return j(this,t,n);case"latin1":case"binary":return I(this,t,n);case"base64":return P(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function k(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function x(e,t,n,r,i){if(0===e.length)return-1;if("string"===typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),te(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"===typeof t&&(t=h.from(t,r)),h.isBuffer(t))return 0===t.length?-1:S(e,t,n,r,i);if("number"===typeof t)return t&=255,"function"===typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):S(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function S(e,t,n,r,i){var a,o=1,s=e.length,u=t.length;if(void 0!==r&&("ucs2"===(r=String(r).toLowerCase())||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,s/=2,u/=2,n/=2}function l(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}if(i){var c=-1;for(a=n;as&&(n=s-u),a=n;a>=0;a--){for(var d=!0,f=0;fi&&(r=i):r=i;var a,o=t.length;for(r>o/2&&(r=o/2),a=0;a>8,i=n%256,a.push(i),a.push(r);return a}(t,e.length-n),e,n,r)}function P(e,t,n){return 0===t&&n===e.length?u.fromByteArray(e):u.fromByteArray(e.slice(t,n))}function L(e,t,n){n=Math.min(e.length,n);for(var r=[],i=t;i239?4:a>223?3:a>191?2:1;if(i+s<=n){var u=void 0,l=void 0,c=void 0,d=void 0;switch(s){case 1:a<128&&(o=a);break;case 2:128===(192&(u=e[i+1]))&&(d=(31&a)<<6|63&u)>127&&(o=d);break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(d=(15&a)<<12|(63&u)<<6|63&l)>2047&&(d<55296||d>57343)&&(o=d);break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(d=(15&a)<<18|(63&u)<<12|(63&l)<<6|63&c)>65535&&d<1114112&&(o=d)}}null===o?(o=65533,s=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=s}return function(e){var t=e.length;if(t<=T)return String.fromCharCode.apply(String,e);var n="",r=0;for(;rr.length?(h.isBuffer(a)||(a=h.from(a)),a.copy(r,i)):Uint8Array.prototype.set.call(r,a,i);else{if(!h.isBuffer(a))throw new TypeError('"list" argument must be an Array of Buffers');a.copy(r,i)}i+=a.length}return r},h.byteLength=b,h.prototype._isBuffer=!0,h.prototype.swap16=function(){var e=this.length;if(e%2!==0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var t=0;tn&&(e+=" ... "),""},c&&(h.prototype[c]=h.prototype.inspect),h.prototype.compare=function(e,t,n,r,i){if(ee(e,Uint8Array)&&(e=h.from(e,e.offset,e.byteLength)),!h.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(this===e)return 0;for(var a=(i>>>=0)-(r>>>=0),o=(n>>>=0)-(t>>>=0),s=Math.min(a,o),u=this.slice(r,i),l=e.slice(t,n),c=0;c>>=0,isFinite(n)?(n>>>=0,void 0===r&&(r="utf8")):(r=n,n=void 0)}var i=this.length-t;if((void 0===n||n>i)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return C(this,e,t,n);case"ascii":case"latin1":case"binary":return N(this,e,t,n);case"base64":return O(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return M(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},h.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var T=4096;function j(e,t,n){var r="";n=Math.min(e.length,n);for(var i=t;ir)&&(n=r);for(var i="",a=t;an)throw new RangeError("Trying to access beyond buffer length")}function z(e,t,n,r,i,a){if(!h.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function B(e,t,n,r,i){G(t,r,i,e,n,7);var a=Number(t&BigInt(4294967295));e[n++]=a,a>>=8,e[n++]=a,a>>=8,e[n++]=a,a>>=8,e[n++]=a;var o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,n}function U(e,t,n,r,i){G(t,r,i,e,n,7);var a=Number(t&BigInt(4294967295));e[n+7]=a,a>>=8,e[n+6]=a,a>>=8,e[n+5]=a,a>>=8,e[n+4]=a;var o=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=o,o>>=8,e[n+2]=o,o>>=8,e[n+1]=o,o>>=8,e[n]=o,n+8}function F(e,t,n,r,i,a){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function Y(e,t,n,r,i){return t=+t,n>>>=0,i||F(e,0,n,4),l.write(e,t,n,r,23,4),n+4}function V(e,t,n,r,i){return t=+t,n>>>=0,i||F(e,0,n,8),l.write(e,t,n,r,52,8),n+8}h.prototype.slice=function(e,t){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||D(e,t,this.length);for(var r=this[e],i=1,a=0;++a>>=0,t>>>=0,n||D(e,t,this.length);for(var r=this[e+--t],i=1;t>0&&(i*=256);)r+=this[e+--t]*i;return r},h.prototype.readUint8=h.prototype.readUInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),this[e]},h.prototype.readUint16LE=h.prototype.readUInt16LE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]|this[e+1]<<8},h.prototype.readUint16BE=h.prototype.readUInt16BE=function(e,t){return e>>>=0,t||D(e,2,this.length),this[e]<<8|this[e+1]},h.prototype.readUint32LE=h.prototype.readUInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},h.prototype.readUint32BE=h.prototype.readUInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},h.prototype.readBigUInt64LE=re((function(e){Z(e>>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||X(e,this.length-8);var r=t+this[++e]*Math.pow(2,8)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,24),i=this[++e]+this[++e]*Math.pow(2,8)+this[++e]*Math.pow(2,16)+n*Math.pow(2,24);return BigInt(r)+(BigInt(i)<>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||X(e,this.length-8);var r=t*Math.pow(2,24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+this[++e],i=this[++e]*Math.pow(2,24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+n;return(BigInt(r)<>>=0,t>>>=0,n||D(e,t,this.length);for(var r=this[e],i=1,a=0;++a=(i*=128)&&(r-=Math.pow(2,8*t)),r},h.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||D(e,t,this.length);for(var r=t,i=1,a=this[e+--r];r>0&&(i*=256);)a+=this[e+--r]*i;return a>=(i*=128)&&(a-=Math.pow(2,8*t)),a},h.prototype.readInt8=function(e,t){return e>>>=0,t||D(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},h.prototype.readInt16LE=function(e,t){e>>>=0,t||D(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt16BE=function(e,t){e>>>=0,t||D(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},h.prototype.readInt32LE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},h.prototype.readInt32BE=function(e,t){return e>>>=0,t||D(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},h.prototype.readBigInt64LE=re((function(e){Z(e>>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||X(e,this.length-8);var r=this[e+4]+this[e+5]*Math.pow(2,8)+this[e+6]*Math.pow(2,16)+(n<<24);return(BigInt(r)<>>=0,"offset");var t=this[e],n=this[e+7];void 0!==t&&void 0!==n||X(e,this.length-8);var r=(t<<24)+this[++e]*Math.pow(2,16)+this[++e]*Math.pow(2,8)+this[++e];return(BigInt(r)<>>=0,t||D(e,4,this.length),l.read(this,e,!0,23,4)},h.prototype.readFloatBE=function(e,t){return e>>>=0,t||D(e,4,this.length),l.read(this,e,!1,23,4)},h.prototype.readDoubleLE=function(e,t){return e>>>=0,t||D(e,8,this.length),l.read(this,e,!0,52,8)},h.prototype.readDoubleBE=function(e,t){return e>>>=0,t||D(e,8,this.length),l.read(this,e,!1,52,8)},h.prototype.writeUintLE=h.prototype.writeUIntLE=function(e,t,n,r){(e=+e,t>>>=0,n>>>=0,r)||z(this,e,t,n,Math.pow(2,8*n)-1,0);var i=1,a=0;for(this[t]=255&e;++a>>=0,n>>>=0,r)||z(this,e,t,n,Math.pow(2,8*n)-1,0);var i=n-1,a=1;for(this[t+i]=255&e;--i>=0&&(a*=256);)this[t+i]=e/a&255;return t+n},h.prototype.writeUint8=h.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,1,255,0),this[t]=255&e,t+1},h.prototype.writeUint16LE=h.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeUint16BE=h.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeUint32LE=h.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},h.prototype.writeUint32BE=h.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigUInt64LE=re((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return B(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeBigUInt64BE=re((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return U(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),h.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);z(this,e,t,n,i-1,-i)}var a=0,o=1,s=0;for(this[t]=255&e;++a>0)-s&255;return t+n},h.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t>>>=0,!r){var i=Math.pow(2,8*n-1);z(this,e,t,n,i-1,-i)}var a=n-1,o=1,s=0;for(this[t+a]=255&e;--a>=0&&(o*=256);)e<0&&0===s&&0!==this[t+a+1]&&(s=1),this[t+a]=(e/o>>0)-s&255;return t+n},h.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},h.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},h.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},h.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},h.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||z(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},h.prototype.writeBigInt64LE=re((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return B(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeBigInt64BE=re((function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return U(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),h.prototype.writeFloatLE=function(e,t,n){return Y(this,e,t,!0,n)},h.prototype.writeFloatBE=function(e,t,n){return Y(this,e,t,!1,n)},h.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},h.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},h.prototype.copy=function(e,t,n,r){if(!h.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"===typeof e)for(a=t;a=r+4;n-=3)t="_".concat(e.slice(n-3,n)).concat(t);return"".concat(e.slice(0,n)).concat(t)}function G(e,t,n,r,i,a){if(e>n||e3?0===t||t===BigInt(0)?">= 0".concat(s," and < 2").concat(s," ** ").concat(8*(a+1)).concat(s):">= -(2".concat(s," ** ").concat(8*(a+1)-1).concat(s,") and < 2 ** ")+"".concat(8*(a+1)-1).concat(s):">= ".concat(t).concat(s," and <= ").concat(n).concat(s),new H.ERR_OUT_OF_RANGE("value",o,e)}!function(e,t,n){Z(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||X(t,e.length-(n+1))}(r,i,a)}function Z(e,t){if("number"!==typeof e)throw new H.ERR_INVALID_ARG_TYPE(t,"number",e)}function X(e,t,n){if(Math.floor(e)!==e)throw Z(e,n),new H.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new H.ERR_BUFFER_OUT_OF_BOUNDS;throw new H.ERR_OUT_OF_RANGE(n||"offset",">= ".concat(n?1:0," and <= ").concat(t),e)}W("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?"".concat(e," is outside of buffer bounds"):"Attempt to access memory outside buffer bounds"}),RangeError),W("ERR_INVALID_ARG_TYPE",(function(e,t){return'The "'.concat(e,'" argument must be of type number. Received type ').concat(typeof t)}),TypeError),W("ERR_OUT_OF_RANGE",(function(e,t,n){var r='The value of "'.concat(e,'" is out of range.'),i=n;return Number.isInteger(n)&&Math.abs(n)>Math.pow(2,32)?i=q(String(n)):"bigint"===typeof n&&(i=String(n),(n>Math.pow(BigInt(2),BigInt(32))||n<-Math.pow(BigInt(2),BigInt(32)))&&(i=q(i)),i+="n"),r+=" It must be ".concat(t,". Received ").concat(i)}),RangeError);var $=/[^+/0-9A-Za-z-_]/g;function K(e,t){var n;t=t||1/0;for(var r=e.length,i=null,a=[],o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&a.push(239,191,189),i=n;continue}n=65536+(i-55296<<10|n-56320)}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;a.push(n)}else if(n<2048){if((t-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function J(e){return u.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace($,"")).length<2)return"";for(;e.length%4!==0;)e+="=";return e}(e))}function Q(e,t,n,r){var i;for(i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function ee(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function te(e){return e!==e}var ne=function(){for(var e="0123456789abcdef",t=new Array(256),n=0;n<16;++n)for(var r=16*n,i=0;i<16;++i)t[r+i]=e[n]+e[i];return t}();function re(e){return"undefined"===typeof BigInt?ie:e}function ie(){throw new Error("BigInt not supported")}},1694:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t=0===y>=4)return null;if(m=(l=s-a)*n+(d=i-o)*r+(h=o*a-i*s),0!==(p=l*e+d*t+h)&&0!==m&&p>=0===m>=0)return null;if(0===(g=u*d-l*c))return null;return g<0?-g/2:g/2,0,w=c*h-d*f,b.x=(w<0?w-0:w+0)/g,w=l*f-u*h,b.y=(w<0?w-0:w+0)/g,b}},2110:function(e,t,n){"use strict";var r=n(7441),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},o={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function u(e){return r.isMemo(e)?o:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=o;var l=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,p=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(p){var i=h(n);i&&i!==p&&e(t,i,r)}var o=c(n);d&&(o=o.concat(d(n)));for(var s=u(t),m=u(n),v=0;v=2?"s":"")},mo:"mois",w:function(e){return"semaine"+(e>=2?"s":"")},d:function(e){return"jour"+(e>=2?"s":"")},h:function(e){return"heure"+(e>=2?"s":"")},m:function(e){return"minute"+(e>=2?"s":"")},s:function(e){return"seconde"+(e>=2?"s":"")},ms:function(e){return"milliseconde"+(e>=2?"s":"")},decimal:","},gr:i,he:{y:function(e){return 1===e?"\u05e9\u05e0\u05d4":"\u05e9\u05e0\u05d9\u05dd"},mo:function(e){return 1===e?"\u05d7\u05d5\u05d3\u05e9":"\u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},w:function(e){return 1===e?"\u05e9\u05d1\u05d5\u05e2":"\u05e9\u05d1\u05d5\u05e2\u05d5\u05ea"},d:function(e){return 1===e?"\u05d9\u05d5\u05dd":"\u05d9\u05de\u05d9\u05dd"},h:function(e){return 1===e?"\u05e9\u05e2\u05d4":"\u05e9\u05e2\u05d5\u05ea"},m:function(e){return 1===e?"\u05d3\u05e7\u05d4":"\u05d3\u05e7\u05d5\u05ea"},s:function(e){return 1===e?"\u05e9\u05e0\u05d9\u05d4":"\u05e9\u05e0\u05d9\u05d5\u05ea"},ms:function(e){return 1===e?"\u05de\u05d9\u05dc\u05d9\u05e9\u05e0\u05d9\u05d9\u05d4":"\u05de\u05d9\u05dc\u05d9\u05e9\u05e0\u05d9\u05d5\u05ea"},decimal:"."},hr:{y:function(e){return e%10===2||e%10===3||e%10===4?"godine":"godina"},mo:function(e){return 1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci"},w:function(e){return e%10===1&&11!==e?"tjedan":"tjedna"},d:function(e){return 1===e?"dan":"dana"},h:function(e){return 1===e?"sat":2===e||3===e||4===e?"sata":"sati"},m:function(e){var t=e%10;return 2!==t&&3!==t&&4!==t||!(e<10||e>14)?"minuta":"minute"},s:function(e){var t=e%10;return 5===t||Math.floor(e)===e&&e>=10&&e<=19?"sekundi":1===t?"sekunda":2===t||3===t||4===t?"sekunde":"sekundi"},ms:function(e){return 1===e?"milisekunda":e%10===2||e%10===3||e%10===4?"milisekunde":"milisekundi"},decimal:","},hi:{y:"\u0938\u093e\u0932",mo:function(e){return 1===e?"\u092e\u0939\u0940\u0928\u093e":"\u092e\u0939\u0940\u0928\u0947"},w:function(e){return 1===e?"\u0939\u095e\u094d\u0924\u093e":"\u0939\u092b\u094d\u0924\u0947"},d:"\u0926\u093f\u0928",h:function(e){return 1===e?"\u0918\u0902\u091f\u093e":"\u0918\u0902\u091f\u0947"},m:"\u092e\u093f\u0928\u091f",s:"\u0938\u0947\u0915\u0902\u0921",ms:"\u092e\u093f\u0932\u0940\u0938\u0947\u0915\u0902\u0921",decimal:"."},hu:{y:"\xe9v",mo:"h\xf3nap",w:"h\xe9t",d:"nap",h:"\xf3ra",m:"perc",s:"m\xe1sodperc",ms:"ezredm\xe1sodperc",decimal:","},id:{y:"tahun",mo:"bulan",w:"minggu",d:"hari",h:"jam",m:"menit",s:"detik",ms:"milidetik",decimal:"."},is:{y:"\xe1r",mo:function(e){return"m\xe1nu\xf0"+(1===e?"ur":"ir")},w:function(e){return"vik"+(1===e?"a":"ur")},d:function(e){return"dag"+(1===e?"ur":"ar")},h:function(e){return"klukkut\xedm"+(1===e?"i":"ar")},m:function(e){return"m\xedn\xfat"+(1===e?"a":"ur")},s:function(e){return"sek\xfand"+(1===e?"a":"ur")},ms:function(e){return"millisek\xfand"+(1===e?"a":"ur")},decimal:"."},it:{y:function(e){return"ann"+(1===e?"o":"i")},mo:function(e){return"mes"+(1===e?"e":"i")},w:function(e){return"settiman"+(1===e?"a":"e")},d:function(e){return"giorn"+(1===e?"o":"i")},h:function(e){return"or"+(1===e?"a":"e")},m:function(e){return"minut"+(1===e?"o":"i")},s:function(e){return"second"+(1===e?"o":"i")},ms:function(e){return"millisecond"+(1===e?"o":"i")},decimal:","},ja:{y:"\u5e74",mo:"\u30f6\u6708",w:"\u9031",d:"\u65e5",h:"\u6642\u9593",m:"\u5206",s:"\u79d2",ms:"\u30df\u30ea\u79d2",decimal:"."},km:{y:"\u1786\u17d2\u1793\u17b6\u17c6",mo:"\u1781\u17c2",w:"\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd",d:"\u1790\u17d2\u1784\u17c3",h:"\u1798\u17c9\u17c4\u1784",m:"\u1793\u17b6\u1791\u17b8",s:"\u179c\u17b7\u1793\u17b6\u1791\u17b8",ms:"\u1798\u17b7\u179b\u17d2\u179b\u17b8\u179c\u17b7\u1793\u17b6\u1791\u17b8"},kn:{y:function(e){return 1===e?"\u0cb5\u0cb0\u0ccd\u0cb7":"\u0cb5\u0cb0\u0ccd\u0cb7\u0c97\u0cb3\u0cc1"},mo:function(e){return 1===e?"\u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1":"\u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1\u0c97\u0cb3\u0cc1"},w:function(e){return 1===e?"\u0cb5\u0cbe\u0cb0":"\u0cb5\u0cbe\u0cb0\u0c97\u0cb3\u0cc1"},d:function(e){return 1===e?"\u0ca6\u0cbf\u0ca8":"\u0ca6\u0cbf\u0ca8\u0c97\u0cb3\u0cc1"},h:function(e){return 1===e?"\u0c97\u0c82\u0c9f\u0cc6":"\u0c97\u0c82\u0c9f\u0cc6\u0c97\u0cb3\u0cc1"},m:function(e){return 1===e?"\u0ca8\u0cbf\u0cae\u0cbf\u0cb7":"\u0ca8\u0cbf\u0cae\u0cbf\u0cb7\u0c97\u0cb3\u0cc1"},s:function(e){return 1===e?"\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd":"\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1"},ms:function(e){return 1===e?"\u0cae\u0cbf\u0cb2\u0cbf\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0ccd":"\u0cae\u0cbf\u0cb2\u0cbf\u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1"}},ko:{y:"\ub144",mo:"\uac1c\uc6d4",w:"\uc8fc\uc77c",d:"\uc77c",h:"\uc2dc\uac04",m:"\ubd84",s:"\ucd08",ms:"\ubc00\ub9ac \ucd08",decimal:"."},ku:{y:"sal",mo:"meh",w:"hefte",d:"roj",h:"seet",m:"deqe",s:"saniye",ms:"m\xeel\xee\xe7irk",decimal:","},lo:{y:"\u0e9b\u0eb5",mo:"\u0ec0\u0e94\u0eb7\u0ead\u0e99",w:"\u0ead\u0eb2\u0e97\u0eb4\u0e94",d:"\u0ea1\u0eb7\u0ec9",h:"\u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",m:"\u0e99\u0eb2\u0e97\u0eb5",s:"\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ms:"\u0ea1\u0eb4\u0e99\u0ea5\u0eb4\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",decimal:","},lt:{y:function(e){return e%10===0||e%100>=10&&e%100<=20?"met\u0173":"metai"},mo:function(e){return["m\u0117nuo","m\u0117nesiai","m\u0117nesi\u0173"][m(e)]},w:function(e){return["savait\u0117","savait\u0117s","savai\u010di\u0173"][m(e)]},d:function(e){return["diena","dienos","dien\u0173"][m(e)]},h:function(e){return["valanda","valandos","valand\u0173"][m(e)]},m:function(e){return["minut\u0117","minut\u0117s","minu\u010di\u0173"][m(e)]},s:function(e){return["sekund\u0117","sekund\u0117s","sekund\u017ei\u0173"][m(e)]},ms:function(e){return["milisekund\u0117","milisekund\u0117s","milisekund\u017ei\u0173"][m(e)]},decimal:","},lv:{y:function(e){return v(e)?"gads":"gadi"},mo:function(e){return v(e)?"m\u0113nesis":"m\u0113ne\u0161i"},w:function(e){return v(e)?"ned\u0113\u013ca":"ned\u0113\u013cas"},d:function(e){return v(e)?"diena":"dienas"},h:function(e){return v(e)?"stunda":"stundas"},m:function(e){return v(e)?"min\u016bte":"min\u016btes"},s:function(e){return v(e)?"sekunde":"sekundes"},ms:function(e){return v(e)?"milisekunde":"milisekundes"},decimal:","},mk:{y:function(e){return 1===e?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0438"},mo:function(e){return 1===e?"\u043c\u0435\u0441\u0435\u0446":"\u043c\u0435\u0441\u0435\u0446\u0438"},w:function(e){return 1===e?"\u043d\u0435\u0434\u0435\u043b\u0430":"\u043d\u0435\u0434\u0435\u043b\u0438"},d:function(e){return 1===e?"\u0434\u0435\u043d":"\u0434\u0435\u043d\u0430"},h:function(e){return 1===e?"\u0447\u0430\u0441":"\u0447\u0430\u0441\u0430"},m:function(e){return 1===e?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0438"},s:function(e){return 1===e?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430":"\u0441\u0435\u043a\u0443\u043d\u0434\u0438"},ms:function(e){return 1===e?"\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430":"\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0438"},decimal:","},mr:{y:function(e){return 1===e?"\u0935\u0930\u094d\u0937":"\u0935\u0930\u094d\u0937\u0947"},mo:function(e){return 1===e?"\u092e\u0939\u093f\u0928\u093e":"\u092e\u0939\u093f\u0928\u0947"},w:function(e){return 1===e?"\u0906\u0920\u0935\u0921\u093e":"\u0906\u0920\u0935\u0921\u0947"},d:"\u0926\u093f\u0935\u0938",h:"\u0924\u093e\u0938",m:function(e){return 1===e?"\u092e\u093f\u0928\u093f\u091f":"\u092e\u093f\u0928\u093f\u091f\u0947"},s:"\u0938\u0947\u0915\u0902\u0926",ms:"\u092e\u093f\u0932\u093f\u0938\u0947\u0915\u0902\u0926"},ms:{y:"tahun",mo:"bulan",w:"minggu",d:"hari",h:"jam",m:"minit",s:"saat",ms:"milisaat",decimal:"."},nl:{y:"jaar",mo:function(e){return 1===e?"maand":"maanden"},w:function(e){return 1===e?"week":"weken"},d:function(e){return 1===e?"dag":"dagen"},h:"uur",m:function(e){return 1===e?"minuut":"minuten"},s:function(e){return 1===e?"seconde":"seconden"},ms:function(e){return 1===e?"milliseconde":"milliseconden"},decimal:","},no:{y:"\xe5r",mo:function(e){return"m\xe5ned"+(1===e?"":"er")},w:function(e){return"uke"+(1===e?"":"r")},d:function(e){return"dag"+(1===e?"":"er")},h:function(e){return"time"+(1===e?"":"r")},m:function(e){return"minutt"+(1===e?"":"er")},s:function(e){return"sekund"+(1===e?"":"er")},ms:function(e){return"millisekund"+(1===e?"":"er")},decimal:","},pl:{y:function(e){return["rok","roku","lata","lat"][f(e)]},mo:function(e){return["miesi\u0105c","miesi\u0105ca","miesi\u0105ce","miesi\u0119cy"][f(e)]},w:function(e){return["tydzie\u0144","tygodnia","tygodnie","tygodni"][f(e)]},d:function(e){return["dzie\u0144","dnia","dni","dni"][f(e)]},h:function(e){return["godzina","godziny","godziny","godzin"][f(e)]},m:function(e){return["minuta","minuty","minuty","minut"][f(e)]},s:function(e){return["sekunda","sekundy","sekundy","sekund"][f(e)]},ms:function(e){return["milisekunda","milisekundy","milisekundy","milisekund"][f(e)]},decimal:","},pt:{y:function(e){return"ano"+(1===e?"":"s")},mo:function(e){return 1===e?"m\xeas":"meses"},w:function(e){return"semana"+(1===e?"":"s")},d:function(e){return"dia"+(1===e?"":"s")},h:function(e){return"hora"+(1===e?"":"s")},m:function(e){return"minuto"+(1===e?"":"s")},s:function(e){return"segundo"+(1===e?"":"s")},ms:function(e){return"milissegundo"+(1===e?"":"s")},decimal:","},ro:{y:function(e){return 1===e?"an":"ani"},mo:function(e){return 1===e?"lun\u0103":"luni"},w:function(e){return 1===e?"s\u0103pt\u0103m\xe2n\u0103":"s\u0103pt\u0103m\xe2ni"},d:function(e){return 1===e?"zi":"zile"},h:function(e){return 1===e?"or\u0103":"ore"},m:function(e){return 1===e?"minut":"minute"},s:function(e){return 1===e?"secund\u0103":"secunde"},ms:function(e){return 1===e?"milisecund\u0103":"milisecunde"},decimal:","},ru:{y:function(e){return["\u043b\u0435\u0442","\u0433\u043e\u0434","\u0433\u043e\u0434\u0430"][h(e)]},mo:function(e){return["\u043c\u0435\u0441\u044f\u0446\u0435\u0432","\u043c\u0435\u0441\u044f\u0446","\u043c\u0435\u0441\u044f\u0446\u0430"][h(e)]},w:function(e){return["\u043d\u0435\u0434\u0435\u043b\u044c","\u043d\u0435\u0434\u0435\u043b\u044f","\u043d\u0435\u0434\u0435\u043b\u0438"][h(e)]},d:function(e){return["\u0434\u043d\u0435\u0439","\u0434\u0435\u043d\u044c","\u0434\u043d\u044f"][h(e)]},h:function(e){return["\u0447\u0430\u0441\u043e\u0432","\u0447\u0430\u0441","\u0447\u0430\u0441\u0430"][h(e)]},m:function(e){return["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0430","\u043c\u0438\u043d\u0443\u0442\u044b"][h(e)]},s:function(e){return["\u0441\u0435\u043a\u0443\u043d\u0434","\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u044b"][h(e)]},ms:function(e){return["\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434","\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u043c\u0438\u043b\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u044b"][h(e)]},decimal:","},sq:{y:function(e){return 1===e?"vit":"vjet"},mo:"muaj",w:"jav\xeb",d:"dit\xeb",h:"or\xeb",m:function(e){return"minut"+(1===e?"\xeb":"a")},s:function(e){return"sekond"+(1===e?"\xeb":"a")},ms:function(e){return"milisekond"+(1===e?"\xeb":"a")},decimal:","},sr:{y:function(e){return["\u0433\u043e\u0434\u0438\u043d\u0438","\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435"][h(e)]},mo:function(e){return["\u043c\u0435\u0441\u0435\u0446\u0438","\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430"][h(e)]},w:function(e){return["\u043d\u0435\u0434\u0435\u0459\u0438","\u043d\u0435\u0434\u0435\u0459\u0430","\u043d\u0435\u0434\u0435\u0459\u0435"][h(e)]},d:function(e){return["\u0434\u0430\u043d\u0438","\u0434\u0430\u043d","\u0434\u0430\u043d\u0430"][h(e)]},h:function(e){return["\u0441\u0430\u0442\u0438","\u0441\u0430\u0442","\u0441\u0430\u0442\u0430"][h(e)]},m:function(e){return["\u043c\u0438\u043d\u0443\u0442\u0430","\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0430"][h(e)]},s:function(e){return["\u0441\u0435\u043a\u0443\u043d\u0434\u0438","\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435"][h(e)]},ms:function(e){return["\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0438","\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u043c\u0438\u043b\u0438\u0441\u0435\u043a\u0443\u043d\u0434\u0435"][h(e)]},decimal:","},ta:{y:function(e){return 1===e?"\u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd":"\u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},mo:function(e){return 1===e?"\u0bae\u0bbe\u0ba4\u0bae\u0bcd":"\u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd"},w:function(e){return 1===e?"\u0bb5\u0bbe\u0bb0\u0bae\u0bcd":"\u0bb5\u0bbe\u0bb0\u0b99\u0bcd\u0b95\u0bb3\u0bcd"},d:function(e){return 1===e?"\u0ba8\u0bbe\u0bb3\u0bcd":"\u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd"},h:function(e){return 1===e?"\u0bae\u0ba3\u0bbf":"\u0bae\u0ba3\u0bbf\u0ba8\u0bc7\u0bb0\u0bae\u0bcd"},m:function(e){return"\u0ba8\u0bbf\u0bae\u0bbf\u0b9f"+(1===e?"\u0bae\u0bcd":"\u0b99\u0bcd\u0b95\u0bb3\u0bcd")},s:function(e){return"\u0bb5\u0bbf\u0ba9\u0bbe\u0b9f\u0bbf"+(1===e?"":"\u0b95\u0bb3\u0bcd")},ms:function(e){return"\u0bae\u0bbf\u0bb2\u0bcd\u0bb2\u0bbf \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf"+(1===e?"":"\u0b95\u0bb3\u0bcd")}},te:{y:function(e){return"\u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38"+(1===e?"\u0c30\u0c02":"\u0c30\u0c3e\u0c32")},mo:function(e){return"\u0c28\u0c46\u0c32"+(1===e?"":"\u0c32")},w:function(e){return 1===e?"\u0c35\u0c3e\u0c30\u0c02":"\u0c35\u0c3e\u0c30\u0c3e\u0c32\u0c41"},d:function(e){return"\u0c30\u0c4b\u0c1c\u0c41"+(1===e?"":"\u0c32\u0c41")},h:function(e){return"\u0c17\u0c02\u0c1f"+(1===e?"":"\u0c32\u0c41")},m:function(e){return 1===e?"\u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02":"\u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41"},s:function(e){return 1===e?"\u0c38\u0c46\u0c15\u0c28\u0c41":"\u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41"},ms:function(e){return 1===e?"\u0c2e\u0c3f\u0c32\u0c4d\u0c32\u0c40\u0c38\u0c46\u0c15\u0c28\u0c4d":"\u0c2e\u0c3f\u0c32\u0c4d\u0c32\u0c40\u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41"}},uk:{y:function(e){return["\u0440\u043e\u043a\u0456\u0432","\u0440\u0456\u043a","\u0440\u043e\u043a\u0438"][h(e)]},mo:function(e){return["\u043c\u0456\u0441\u044f\u0446\u0456\u0432","\u043c\u0456\u0441\u044f\u0446\u044c","\u043c\u0456\u0441\u044f\u0446\u0456"][h(e)]},w:function(e){return["\u0442\u0438\u0436\u043d\u0456\u0432","\u0442\u0438\u0436\u0434\u0435\u043d\u044c","\u0442\u0438\u0436\u043d\u0456"][h(e)]},d:function(e){return["\u0434\u043d\u0456\u0432","\u0434\u0435\u043d\u044c","\u0434\u043d\u0456"][h(e)]},h:function(e){return["\u0433\u043e\u0434\u0438\u043d","\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0438"][h(e)]},m:function(e){return["\u0445\u0432\u0438\u043b\u0438\u043d","\u0445\u0432\u0438\u043b\u0438\u043d\u0430","\u0445\u0432\u0438\u043b\u0438\u043d\u0438"][h(e)]},s:function(e){return["\u0441\u0435\u043a\u0443\u043d\u0434","\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"][h(e)]},ms:function(e){return["\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434","\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u043c\u0456\u043b\u0456\u0441\u0435\u043a\u0443\u043d\u0434\u0438"][h(e)]},decimal:","},ur:{y:"\u0633\u0627\u0644",mo:function(e){return 1===e?"\u0645\u06c1\u06cc\u0646\u06c1":"\u0645\u06c1\u06cc\u0646\u06d2"},w:function(e){return 1===e?"\u06c1\u0641\u062a\u06c1":"\u06c1\u0641\u062a\u06d2"},d:"\u062f\u0646",h:function(e){return 1===e?"\u06af\u06be\u0646\u0679\u06c1":"\u06af\u06be\u0646\u0679\u06d2"},m:"\u0645\u0646\u0679",s:"\u0633\u06cc\u06a9\u0646\u0688",ms:"\u0645\u0644\u06cc \u0633\u06cc\u06a9\u0646\u0688",decimal:"."},sk:{y:function(e){return["rok","roky","roky","rokov"][p(e)]},mo:function(e){return["mesiac","mesiace","mesiace","mesiacov"][p(e)]},w:function(e){return["t\xfd\u017ede\u0148","t\xfd\u017edne","t\xfd\u017edne","t\xfd\u017ed\u0148ov"][p(e)]},d:function(e){return["de\u0148","dni","dni","dn\xed"][p(e)]},h:function(e){return["hodina","hodiny","hodiny","hod\xedn"][p(e)]},m:function(e){return["min\xfata","min\xfaty","min\xfaty","min\xfat"][p(e)]},s:function(e){return["sekunda","sekundy","sekundy","sek\xfand"][p(e)]},ms:function(e){return["milisekunda","milisekundy","milisekundy","milisek\xfand"][p(e)]},decimal:","},sl:{y:function(e){return e%10===1?"leto":e%100===2?"leti":e%100===3||e%100===4||Math.floor(e)!==e&&e%100<=5?"leta":"let"},mo:function(e){return e%10===1?"mesec":e%100===2||Math.floor(e)!==e&&e%100<=5?"meseca":e%10===3||e%10===4?"mesece":"mesecev"},w:function(e){return e%10===1?"teden":e%10===2||Math.floor(e)!==e&&e%100<=4?"tedna":e%10===3||e%10===4?"tedne":"tednov"},d:function(e){return e%100===1?"dan":"dni"},h:function(e){return e%10===1?"ura":e%100===2?"uri":e%10===3||e%10===4||Math.floor(e)!==e?"ure":"ur"},m:function(e){return e%10===1?"minuta":e%10===2?"minuti":e%10===3||e%10===4||Math.floor(e)!==e&&e%100<=4?"minute":"minut"},s:function(e){return e%10===1?"sekunda":e%100===2?"sekundi":e%100===3||e%100===4||Math.floor(e)!==e?"sekunde":"sekund"},ms:function(e){return e%10===1?"milisekunda":e%100===2?"milisekundi":e%100===3||e%100===4||Math.floor(e)!==e?"milisekunde":"milisekund"},decimal:","},sv:{y:"\xe5r",mo:function(e){return"m\xe5nad"+(1===e?"":"er")},w:function(e){return"veck"+(1===e?"a":"or")},d:function(e){return"dag"+(1===e?"":"ar")},h:function(e){return"timm"+(1===e?"e":"ar")},m:function(e){return"minut"+(1===e?"":"er")},s:function(e){return"sekund"+(1===e?"":"er")},ms:function(e){return"millisekund"+(1===e?"":"er")},decimal:","},sw:{y:function(e){return 1===e?"mwaka":"miaka"},mo:function(e){return 1===e?"mwezi":"miezi"},w:"wiki",d:function(e){return 1===e?"siku":"masiku"},h:function(e){return 1===e?"saa":"masaa"},m:"dakika",s:"sekunde",ms:"milisekunde",decimal:".",_numberFirst:!0},tr:{y:"y\u0131l",mo:"ay",w:"hafta",d:"g\xfcn",h:"saat",m:"dakika",s:"saniye",ms:"milisaniye",decimal:","},th:{y:"\u0e1b\u0e35",mo:"\u0e40\u0e14\u0e37\u0e2d\u0e19",w:"\u0e2a\u0e31\u0e1b\u0e14\u0e32\u0e2b\u0e4c",d:"\u0e27\u0e31\u0e19",h:"\u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",m:"\u0e19\u0e32\u0e17\u0e35",s:"\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ms:"\u0e21\u0e34\u0e25\u0e25\u0e34\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",decimal:"."},vi:{y:"n\u0103m",mo:"th\xe1ng",w:"tu\u1ea7n",d:"ng\xe0y",h:"gi\u1edd",m:"ph\xfat",s:"gi\xe2y",ms:"mili gi\xe2y",decimal:","},zh_CN:{y:"\u5e74",mo:"\u4e2a\u6708",w:"\u5468",d:"\u5929",h:"\u5c0f\u65f6",m:"\u5206\u949f",s:"\u79d2",ms:"\u6beb\u79d2",decimal:"."},zh_TW:{y:"\u5e74",mo:"\u500b\u6708",w:"\u5468",d:"\u5929",h:"\u5c0f\u6642",m:"\u5206\u9418",s:"\u79d2",ms:"\u6beb\u79d2",decimal:"."}};function s(e){var t=function(e,n){return function(e,t){var n,r,i;e=Math.abs(e);var a,s,u,c=function(e){var t=[e.language];if(g(e,"fallbacks")){if(!y(e.fallbacks)||!e.fallbacks.length)throw new Error("fallbacks must be an array with at least one element");t=t.concat(e.fallbacks)}for(var n=0;n=0&&((i=d[n]).unitCount=Math.round(i.unitCount),0!==n);n--)m=d[n-1],p=t.unitMeasures[m.unitName]/t.unitMeasures[i.unitName],(i.unitCount%p===0||t.largest&&t.largest-12)return w.slice(0,-1).join(b)+(t.serialComma?",":"")+t.conjunction+w.slice(-1)}(e,c({},t,n||{}))};return c(t,{language:"en",spacer:" ",conjunction:"",serialComma:!0,units:["y","mo","w","d","h","m","s"],languages:{},round:!1,unitMeasures:{y:315576e5,mo:26298e5,w:6048e5,d:864e5,h:36e5,m:6e4,s:1e3,ms:1}},e)}var u=s({});function l(e,t,n,r){var i,a;i=g(r,"decimal")?r.decimal:g(n,"decimal")?n.decimal:".",a="function"===typeof n._formatCount?n._formatCount(e,i):e.toString().replace(".",i);var o,s=n[t];return o="function"===typeof s?s(e):s,n._numberFirst?o+r.spacer+a:a+r.spacer+o}function c(e){for(var t,n=1;n2&&e<11?2:0}function f(e){return 1===e?0:Math.floor(e)!==e?1:e%10>=2&&e%10<=4&&!(e%100>10&&e%100<20)?2:3}function h(e){return Math.floor(e)!==e?2:e%100>=5&&e%100<=20||e%10>=5&&e%10<=9||e%10===0?0:e%10===1?1:e>1?2:0}function p(e){return 1===e?0:Math.floor(e)!==e?1:e%10>=2&&e%10<=4&&e%100<10?2:3}function m(e){return 1===e||e%10===1&&e%100>20?0:Math.floor(e)!==e||e%10>=2&&e%100>20||e%10>=2&&e%100<10?1:2}function v(e){return e%10===1&&e%100!==11}var y=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)};function g(e,t){return Object.prototype.hasOwnProperty.call(e,t)}u.getSupportedLanguages=function(){var e=[];for(var t in o)g(o,t)&&"gr"!==t&&e.push(t);return e},u.humanizer=s,void 0===(r=function(){return u}.call(t,n,t,e))||(e.exports=r)}()},4038:function(e,t){t.read=function(e,t,n,r,i){var a,o,s=8*i-r-1,u=(1<>1,c=-7,d=n?i-1:0,f=n?-1:1,h=e[t+d];for(d+=f,a=h&(1<<-c)-1,h>>=-c,c+=s;c>0;a=256*a+e[t+d],d+=f,c-=8);for(o=a&(1<<-c)-1,a>>=-c,c+=r;c>0;o=256*o+e[t+d],d+=f,c-=8);if(0===a)a=1-l;else{if(a===u)return o?NaN:1/0*(h?-1:1);o+=Math.pow(2,r),a-=l}return(h?-1:1)*o*Math.pow(2,a-r)},t.write=function(e,t,n,r,i,a){var o,s,u,l=8*a-i-1,c=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:a-1,p=r?1:-1,m=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,o=c):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),(t+=o+d>=1?f/u:f*Math.pow(2,1-d))*u>=2&&(o++,u/=2),o+d>=c?(s=0,o=c):o+d>=1?(s=(t*u-1)*Math.pow(2,i),o+=d):(s=t*Math.pow(2,d-1)*Math.pow(2,i),o=0));i>=8;e[n+h]=255&s,h+=p,s/=256,i-=8);for(o=o<0;e[n+h]=255&o,h+=p,o/=256,l-=8);e[n+h-p]|=128*m}},1571:function(e){e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},2426:function(e,t,n){(e=n.nmd(e)).exports=function(){"use strict";var t,n;function r(){return t.apply(null,arguments)}function i(e){t=e}function a(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function o(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function s(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function u(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(s(e,t))return!1;return!0}function l(e){return void 0===e}function c(e){return"number"===typeof e||"[object Number]"===Object.prototype.toString.call(e)}function d(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,r=[],i=e.length;for(n=0;n>>0;for(t=0;t0)for(n=0;n=0?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+r}var A=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,D=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,z={},B={};function U(e,t,n,r){var i=r;"string"===typeof r&&(i=function(){return this[r]()}),e&&(B[e]=i),t&&(B[t[0]]=function(){return R(i.apply(this,arguments),t[1],t[2])}),n&&(B[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function F(e){return e.match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"")}function Y(e){var t,n,r=e.match(A);for(t=0,n=r.length;t=0&&D.test(e);)e=e.replace(D,r),D.lastIndex=0,n-=1;return e}var W={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function q(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.match(A).map((function(e){return"MMMM"===e||"MM"===e||"DD"===e||"dddd"===e?e.slice(1):e})).join(""),this._longDateFormat[e])}var G="Invalid date";function Z(){return this._invalidDate}var X="%d",$=/\d{1,2}/;function K(e){return this._ordinal.replace("%d",e)}var J={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function Q(e,t,n,r){var i=this._relativeTime[n];return M(i)?i(e,t,n,r):i.replace(/%d/i,e)}function ee(e,t){var n=this._relativeTime[e>0?"future":"past"];return M(n)?n(t):n.replace(/%s/i,t)}var te={};function ne(e,t){var n=e.toLowerCase();te[n]=te[n+"s"]=te[t]=e}function re(e){return"string"===typeof e?te[e]||te[e.toLowerCase()]:void 0}function ie(e){var t,n,r={};for(n in e)s(e,n)&&(t=re(n))&&(r[t]=e[n]);return r}var ae={};function oe(e,t){ae[e]=t}function se(e){var t,n=[];for(t in e)s(e,t)&&n.push({unit:t,priority:ae[t]});return n.sort((function(e,t){return e.priority-t.priority})),n}function ue(e){return e%4===0&&e%100!==0||e%400===0}function le(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function ce(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=le(t)),n}function de(e,t){return function(n){return null!=n?(he(this,e,n),r.updateOffset(this,t),this):fe(this,e)}}function fe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function he(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ue(e.year())&&1===e.month()&&29===e.date()?(n=ce(n),e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Qe(n,e.month()))):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function pe(e){return M(this[e=re(e)])?this[e]():this}function me(e,t){if("object"===typeof e){var n,r=se(e=ie(e)),i=r.length;for(n=0;n68?1900:2e3)};var vt=de("FullYear",!0);function yt(){return ue(this.year())}function gt(e,t,n,r,i,a,o){var s;return e<100&&e>=0?(s=new Date(e+400,t,n,r,i,a,o),isFinite(s.getFullYear())&&s.setFullYear(e)):s=new Date(e,t,n,r,i,a,o),s}function wt(e){var t,n;return e<100&&e>=0?((n=Array.prototype.slice.call(arguments))[0]=e+400,t=new Date(Date.UTC.apply(null,n)),isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e)):t=new Date(Date.UTC.apply(null,arguments)),t}function bt(e,t,n){var r=7+t-n;return-(7+wt(e,0,r).getUTCDay()-t)%7+r-1}function _t(e,t,n,r,i){var a,o,s=1+7*(t-1)+(7+n-r)%7+bt(e,r,i);return s<=0?o=mt(a=e-1)+s:s>mt(e)?(a=e+1,o=s-mt(e)):(a=e,o=s),{year:a,dayOfYear:o}}function kt(e,t,n){var r,i,a=bt(e.year(),t,n),o=Math.floor((e.dayOfYear()-a-1)/7)+1;return o<1?r=o+xt(i=e.year()-1,t,n):o>xt(e.year(),t,n)?(r=o-xt(e.year(),t,n),i=e.year()+1):(i=e.year(),r=o),{week:r,year:i}}function xt(e,t,n){var r=bt(e,t,n),i=bt(e+1,t,n);return(mt(e)-r+i)/7}function St(e){return kt(e,this._week.dow,this._week.doy).week}U("w",["ww",2],"wo","week"),U("W",["WW",2],"Wo","isoWeek"),ne("week","w"),ne("isoWeek","W"),oe("week",5),oe("isoWeek",5),Ie("w",ke),Ie("ww",ke,ge),Ie("W",ke),Ie("WW",ke,ge),Ue(["w","ww","W","WW"],(function(e,t,n,r){t[r.substr(0,1)]=ce(e)}));var Et={dow:0,doy:6};function Ct(){return this._week.dow}function Nt(){return this._week.doy}function Ot(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")}function Mt(e){var t=kt(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")}function Pt(e,t){return"string"!==typeof e?e:isNaN(e)?"number"===typeof(e=t.weekdaysParse(e))?e:null:parseInt(e,10)}function Lt(e,t){return"string"===typeof e?t.weekdaysParse(e)%7||7:isNaN(e)?null:e}function Tt(e,t){return e.slice(t,7).concat(e.slice(0,t))}U("d",0,"do","day"),U("dd",0,0,(function(e){return this.localeData().weekdaysMin(this,e)})),U("ddd",0,0,(function(e){return this.localeData().weekdaysShort(this,e)})),U("dddd",0,0,(function(e){return this.localeData().weekdays(this,e)})),U("e",0,0,"weekday"),U("E",0,0,"isoWeekday"),ne("day","d"),ne("weekday","e"),ne("isoWeekday","E"),oe("day",11),oe("weekday",11),oe("isoWeekday",11),Ie("d",ke),Ie("e",ke),Ie("E",ke),Ie("dd",(function(e,t){return t.weekdaysMinRegex(e)})),Ie("ddd",(function(e,t){return t.weekdaysShortRegex(e)})),Ie("dddd",(function(e,t){return t.weekdaysRegex(e)})),Ue(["dd","ddd","dddd"],(function(e,t,n,r){var i=n._locale.weekdaysParse(e,r,n._strict);null!=i?t.d=i:v(n).invalidWeekday=e})),Ue(["d","e","E"],(function(e,t,n,r){t[r]=ce(e)}));var jt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),It="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),Rt="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),At=je,Dt=je,zt=je;function Bt(e,t){var n=a(this._weekdays)?this._weekdays:this._weekdays[e&&!0!==e&&this._weekdays.isFormat.test(t)?"format":"standalone"];return!0===e?Tt(n,this._week.dow):e?n[e.day()]:n}function Ut(e){return!0===e?Tt(this._weekdaysShort,this._week.dow):e?this._weekdaysShort[e.day()]:this._weekdaysShort}function Ft(e){return!0===e?Tt(this._weekdaysMin,this._week.dow):e?this._weekdaysMin[e.day()]:this._weekdaysMin}function Yt(e,t,n){var r,i,a,o=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],r=0;r<7;++r)a=p([2e3,1]).day(r),this._minWeekdaysParse[r]=this.weekdaysMin(a,"").toLocaleLowerCase(),this._shortWeekdaysParse[r]=this.weekdaysShort(a,"").toLocaleLowerCase(),this._weekdaysParse[r]=this.weekdays(a,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,o))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,o))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,o))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,o))||-1!==(i=Ye.call(this._shortWeekdaysParse,o))||-1!==(i=Ye.call(this._minWeekdaysParse,o))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,o))||-1!==(i=Ye.call(this._weekdaysParse,o))||-1!==(i=Ye.call(this._minWeekdaysParse,o))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,o))||-1!==(i=Ye.call(this._weekdaysParse,o))||-1!==(i=Ye.call(this._shortWeekdaysParse,o))?i:null}function Vt(e,t,n){var r,i,a;if(this._weekdaysParseExact)return Yt.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),r=0;r<7;r++){if(i=p([2e3,1]).day(r),n&&!this._fullWeekdaysParse[r]&&(this._fullWeekdaysParse[r]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[r]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[r]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[r]||(a="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[r]=new RegExp(a.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[r].test(e))return r;if(n&&"ddd"===t&&this._shortWeekdaysParse[r].test(e))return r;if(n&&"dd"===t&&this._minWeekdaysParse[r].test(e))return r;if(!n&&this._weekdaysParse[r].test(e))return r}}function Ht(e){if(!this.isValid())return null!=e?this:NaN;var t=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(e=Pt(e,this.localeData()),this.add(e-t,"d")):t}function Wt(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")}function qt(e){if(!this.isValid())return null!=e?this:NaN;if(null!=e){var t=Lt(e,this.localeData());return this.day(this.day()%7?t:t-7)}return this.day()||7}function Gt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||$t.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(s(this,"_weekdaysRegex")||(this._weekdaysRegex=At),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)}function Zt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||$t.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(s(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Dt),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Xt(e){return this._weekdaysParseExact?(s(this,"_weekdaysRegex")||$t.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(s(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=zt),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function $t(){function e(e,t){return t.length-e.length}var t,n,r,i,a,o=[],s=[],u=[],l=[];for(t=0;t<7;t++)n=p([2e3,1]).day(t),r=De(this.weekdaysMin(n,"")),i=De(this.weekdaysShort(n,"")),a=De(this.weekdays(n,"")),o.push(r),s.push(i),u.push(a),l.push(r),l.push(i),l.push(a);o.sort(e),s.sort(e),u.sort(e),l.sort(e),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+s.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Kt(){return this.hours()%12||12}function Jt(){return this.hours()||24}function Qt(e,t){U(e,0,0,(function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)}))}function en(e,t){return t._meridiemParse}function tn(e){return"p"===(e+"").toLowerCase().charAt(0)}U("H",["HH",2],0,"hour"),U("h",["hh",2],0,Kt),U("k",["kk",2],0,Jt),U("hmm",0,0,(function(){return""+Kt.apply(this)+R(this.minutes(),2)})),U("hmmss",0,0,(function(){return""+Kt.apply(this)+R(this.minutes(),2)+R(this.seconds(),2)})),U("Hmm",0,0,(function(){return""+this.hours()+R(this.minutes(),2)})),U("Hmmss",0,0,(function(){return""+this.hours()+R(this.minutes(),2)+R(this.seconds(),2)})),Qt("a",!0),Qt("A",!1),ne("hour","h"),oe("hour",13),Ie("a",en),Ie("A",en),Ie("H",ke),Ie("h",ke),Ie("k",ke),Ie("HH",ke,ge),Ie("hh",ke,ge),Ie("kk",ke,ge),Ie("hmm",xe),Ie("hmmss",Se),Ie("Hmm",xe),Ie("Hmmss",Se),Be(["H","HH"],qe),Be(["k","kk"],(function(e,t,n){var r=ce(e);t[qe]=24===r?0:r})),Be(["a","A"],(function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e})),Be(["h","hh"],(function(e,t,n){t[qe]=ce(e),v(n).bigHour=!0})),Be("hmm",(function(e,t,n){var r=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ge]=ce(e.substr(r)),v(n).bigHour=!0})),Be("hmmss",(function(e,t,n){var r=e.length-4,i=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ge]=ce(e.substr(r,2)),t[Ze]=ce(e.substr(i)),v(n).bigHour=!0})),Be("Hmm",(function(e,t,n){var r=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ge]=ce(e.substr(r))})),Be("Hmmss",(function(e,t,n){var r=e.length-4,i=e.length-2;t[qe]=ce(e.substr(0,r)),t[Ge]=ce(e.substr(r,2)),t[Ze]=ce(e.substr(i))}));var nn=/[ap]\.?m?\.?/i,rn=de("Hours",!0);function an(e,t,n){return e>11?n?"pm":"PM":n?"am":"AM"}var on,sn={calendar:j,longDateFormat:W,invalidDate:G,ordinal:X,dayOfMonthOrdinalParse:$,relativeTime:J,months:et,monthsShort:tt,week:Et,weekdays:jt,weekdaysMin:Rt,weekdaysShort:It,meridiemParse:nn},un={},ln={};function cn(e,t){var n,r=Math.min(e.length,t.length);for(n=0;n0;){if(r=pn(i.slice(0,t).join("-")))return r;if(n&&n.length>=t&&cn(i,n)>=t-1)break;t--}a++}return on}function hn(e){return null!=e.match("^[^/\\\\]*$")}function pn(t){var n=null;if(void 0===un[t]&&e&&e.exports&&hn(t))try{n=on._abbr,Object(function(){var e=new Error("Cannot find module 'undefined'");throw e.code="MODULE_NOT_FOUND",e}()),mn(n)}catch(r){un[t]=null}return un[t]}function mn(e,t){var n;return e&&((n=l(t)?gn(e):vn(e,t))?on=n:"undefined"!==typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),on._abbr}function vn(e,t){if(null!==t){var n,r=sn;if(t.abbr=e,null!=un[e])O("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),r=un[e]._config;else if(null!=t.parentLocale)if(null!=un[t.parentLocale])r=un[t.parentLocale]._config;else{if(null==(n=pn(t.parentLocale)))return ln[t.parentLocale]||(ln[t.parentLocale]=[]),ln[t.parentLocale].push({name:e,config:t}),null;r=n._config}return un[e]=new T(L(r,t)),ln[e]&&ln[e].forEach((function(e){vn(e.name,e.config)})),mn(e),un[e]}return delete un[e],null}function yn(e,t){if(null!=t){var n,r,i=sn;null!=un[e]&&null!=un[e].parentLocale?un[e].set(L(un[e]._config,t)):(null!=(r=pn(e))&&(i=r._config),t=L(i,t),null==r&&(t.abbr=e),(n=new T(t)).parentLocale=un[e],un[e]=n),mn(e)}else null!=un[e]&&(null!=un[e].parentLocale?(un[e]=un[e].parentLocale,e===mn()&&mn(e)):null!=un[e]&&delete un[e]);return un[e]}function gn(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return on;if(!a(e)){if(t=pn(e))return t;e=[e]}return fn(e)}function wn(){return C(un)}function bn(e){var t,n=e._a;return n&&-2===v(e).overflow&&(t=n[He]<0||n[He]>11?He:n[We]<1||n[We]>Qe(n[Ve],n[He])?We:n[qe]<0||n[qe]>24||24===n[qe]&&(0!==n[Ge]||0!==n[Ze]||0!==n[Xe])?qe:n[Ge]<0||n[Ge]>59?Ge:n[Ze]<0||n[Ze]>59?Ze:n[Xe]<0||n[Xe]>999?Xe:-1,v(e)._overflowDayOfYear&&(tWe)&&(t=We),v(e)._overflowWeeks&&-1===t&&(t=$e),v(e)._overflowWeekday&&-1===t&&(t=Ke),v(e).overflow=t),e}var _n=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,kn=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,xn=/Z|[+-]\d\d(?::?\d\d)?/,Sn=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],En=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],Cn=/^\/?Date\((-?\d+)/i,Nn=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,On={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Mn(e){var t,n,r,i,a,o,s=e._i,u=_n.exec(s)||kn.exec(s),l=Sn.length,c=En.length;if(u){for(v(e).iso=!0,t=0,n=l;tmt(a)||0===e._dayOfYear)&&(v(e)._overflowDayOfYear=!0),n=wt(a,0,e._dayOfYear),e._a[He]=n.getUTCMonth(),e._a[We]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=o[t]=r[t];for(;t<7;t++)e._a[t]=o[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[qe]&&0===e._a[Ge]&&0===e._a[Ze]&&0===e._a[Xe]&&(e._nextDay=!0,e._a[qe]=0),e._d=(e._useUTC?wt:gt).apply(null,o),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[qe]=24),e._w&&"undefined"!==typeof e._w.d&&e._w.d!==i&&(v(e).weekdayMismatch=!0)}}function Un(e){var t,n,r,i,a,o,s,u,l;null!=(t=e._w).GG||null!=t.W||null!=t.E?(a=1,o=4,n=Dn(t.GG,e._a[Ve],kt(Xn(),1,4).year),r=Dn(t.W,1),((i=Dn(t.E,1))<1||i>7)&&(u=!0)):(a=e._locale._week.dow,o=e._locale._week.doy,l=kt(Xn(),a,o),n=Dn(t.gg,e._a[Ve],l.year),r=Dn(t.w,l.week),null!=t.d?((i=t.d)<0||i>6)&&(u=!0):null!=t.e?(i=t.e+a,(t.e<0||t.e>6)&&(u=!0)):i=a),r<1||r>xt(n,a,o)?v(e)._overflowWeeks=!0:null!=u?v(e)._overflowWeekday=!0:(s=_t(n,r,i,a,o),e._a[Ve]=s.year,e._dayOfYear=s.dayOfYear)}function Fn(e){if(e._f!==r.ISO_8601)if(e._f!==r.RFC_2822){e._a=[],v(e).empty=!0;var t,n,i,a,o,s,u,l=""+e._i,c=l.length,d=0;for(u=(i=H(e._f,e._locale).match(A)||[]).length,t=0;t0&&v(e).unusedInput.push(o),l=l.slice(l.indexOf(n)+n.length),d+=n.length),B[a]?(n?v(e).empty=!1:v(e).unusedTokens.push(a),Fe(a,n,e)):e._strict&&!n&&v(e).unusedTokens.push(a);v(e).charsLeftOver=c-d,l.length>0&&v(e).unusedInput.push(l),e._a[qe]<=12&&!0===v(e).bigHour&&e._a[qe]>0&&(v(e).bigHour=void 0),v(e).parsedDateParts=e._a.slice(0),v(e).meridiem=e._meridiem,e._a[qe]=Yn(e._locale,e._a[qe],e._meridiem),null!==(s=v(e).era)&&(e._a[Ve]=e._locale.erasConvertYear(s,e._a[Ve])),Bn(e),bn(e)}else Rn(e);else Mn(e)}function Yn(e,t,n){var r;return null==n?t:null!=e.meridiemHour?e.meridiemHour(t,n):null!=e.isPM?((r=e.isPM(n))&&t<12&&(t+=12),r||12!==t||(t=0),t):t}function Vn(e){var t,n,r,i,a,o,s=!1,u=e._f.length;if(0===u)return v(e).invalidFormat=!0,void(e._d=new Date(NaN));for(i=0;ithis?this:e:g()}));function Jn(e,t){var n,r;if(1===t.length&&a(t[0])&&(t=t[0]),!t.length)return Xn();for(n=t[0],r=1;rthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function kr(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e,t={};return _(t,this),(t=qn(t))._a?(e=t._isUTC?p(t._a):Xn(t._a),this._isDSTShifted=this.isValid()&&lr(t._a,e.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function xr(){return!!this.isValid()&&!this._isUTC}function Sr(){return!!this.isValid()&&this._isUTC}function Er(){return!!this.isValid()&&this._isUTC&&0===this._offset}r.updateOffset=function(){};var Cr=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Nr=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Or(e,t){var n,r,i,a=e,o=null;return sr(e)?a={ms:e._milliseconds,d:e._days,M:e._months}:c(e)||!isNaN(+e)?(a={},t?a[t]=+e:a.milliseconds=+e):(o=Cr.exec(e))?(n="-"===o[1]?-1:1,a={y:0,d:ce(o[We])*n,h:ce(o[qe])*n,m:ce(o[Ge])*n,s:ce(o[Ze])*n,ms:ce(ur(1e3*o[Xe]))*n}):(o=Nr.exec(e))?(n="-"===o[1]?-1:1,a={y:Mr(o[2],n),M:Mr(o[3],n),w:Mr(o[4],n),d:Mr(o[5],n),h:Mr(o[6],n),m:Mr(o[7],n),s:Mr(o[8],n)}):null==a?a={}:"object"===typeof a&&("from"in a||"to"in a)&&(i=Lr(Xn(a.from),Xn(a.to)),(a={}).ms=i.milliseconds,a.M=i.months),r=new or(a),sr(e)&&s(e,"_locale")&&(r._locale=e._locale),sr(e)&&s(e,"_isValid")&&(r._isValid=e._isValid),r}function Mr(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Pr(e,t){var n={};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function Lr(e,t){var n;return e.isValid()&&t.isValid()?(t=hr(t,e),e.isBefore(t)?n=Pr(e,t):((n=Pr(t,e)).milliseconds=-n.milliseconds,n.months=-n.months),n):{milliseconds:0,months:0}}function Tr(e,t){return function(n,r){var i;return null===r||isNaN(+r)||(O(t,"moment()."+t+"(period, number) is deprecated. Please use moment()."+t+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),i=n,n=r,r=i),jr(this,Or(n,r),e),this}}function jr(e,t,n,i){var a=t._milliseconds,o=ur(t._days),s=ur(t._months);e.isValid()&&(i=null==i||i,s&<(e,fe(e,"Month")+s*n),o&&he(e,"Date",fe(e,"Date")+o*n),a&&e._d.setTime(e._d.valueOf()+a*n),i&&r.updateOffset(e,o||s))}Or.fn=or.prototype,Or.invalid=ar;var Ir=Tr(1,"add"),Rr=Tr(-1,"subtract");function Ar(e){return"string"===typeof e||e instanceof String}function Dr(e){return x(e)||d(e)||Ar(e)||c(e)||Br(e)||zr(e)||null===e||void 0===e}function zr(e){var t,n,r=o(e)&&!u(e),i=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],l=a.length;for(t=0;tn.valueOf():n.valueOf()9999?V(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):M(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",V(n,"Z")):V(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function ei(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e,t,n,r,i="moment",a="";return this.isLocal()||(i=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z"),e="["+i+'("]',t=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n="-MM-DD[T]HH:mm:ss.SSS",r=a+'[")]',this.format(e+t+n+r)}function ti(e){e||(e=this.isUtc()?r.defaultFormatUtc:r.defaultFormat);var t=V(this,e);return this.localeData().postformat(t)}function ni(e,t){return this.isValid()&&(x(e)&&e.isValid()||Xn(e).isValid())?Or({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ri(e){return this.from(Xn(),e)}function ii(e,t){return this.isValid()&&(x(e)&&e.isValid()||Xn(e).isValid())?Or({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()}function ai(e){return this.to(Xn(),e)}function oi(e){var t;return void 0===e?this._locale._abbr:(null!=(t=gn(e))&&(this._locale=t),this)}r.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",r.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var si=E("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",(function(e){return void 0===e?this.localeData():this.locale(e)}));function ui(){return this._locale}var li=1e3,ci=60*li,di=60*ci,fi=3506328*di;function hi(e,t){return(e%t+t)%t}function pi(e,t,n){return e<100&&e>=0?new Date(e+400,t,n)-fi:new Date(e,t,n).valueOf()}function mi(e,t,n){return e<100&&e>=0?Date.UTC(e+400,t,n)-fi:Date.UTC(e,t,n)}function vi(e){var t,n;if(void 0===(e=re(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?mi:pi,e){case"year":t=n(this.year(),0,1);break;case"quarter":t=n(this.year(),this.month()-this.month()%3,1);break;case"month":t=n(this.year(),this.month(),1);break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":t=n(this.year(),this.month(),this.date());break;case"hour":t=this._d.valueOf(),t-=hi(t+(this._isUTC?0:this.utcOffset()*ci),di);break;case"minute":t=this._d.valueOf(),t-=hi(t,ci);break;case"second":t=this._d.valueOf(),t-=hi(t,li)}return this._d.setTime(t),r.updateOffset(this,!0),this}function yi(e){var t,n;if(void 0===(e=re(e))||"millisecond"===e||!this.isValid())return this;switch(n=this._isUTC?mi:pi,e){case"year":t=n(this.year()+1,0,1)-1;break;case"quarter":t=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":t=n(this.year(),this.month()+1,1)-1;break;case"week":t=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":t=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":t=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":t=this._d.valueOf(),t+=di-hi(t+(this._isUTC?0:this.utcOffset()*ci),di)-1;break;case"minute":t=this._d.valueOf(),t+=ci-hi(t,ci)-1;break;case"second":t=this._d.valueOf(),t+=li-hi(t,li)-1}return this._d.setTime(t),r.updateOffset(this,!0),this}function gi(){return this._d.valueOf()-6e4*(this._offset||0)}function wi(){return Math.floor(this.valueOf()/1e3)}function bi(){return new Date(this.valueOf())}function _i(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]}function ki(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}}function xi(){return this.isValid()?this.toISOString():null}function Si(){return y(this)}function Ei(){return h({},v(this))}function Ci(){return v(this).overflow}function Ni(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}function Oi(e,t){var n,i,a,o=this._eras||gn("en")._eras;for(n=0,i=o.length;n=0)return u[r]}function Pi(e,t){var n=e.since<=e.until?1:-1;return void 0===t?r(e.since).year():r(e.since).year()+(t-e.offset)*n}function Li(){var e,t,n,r=this.localeData().eras();for(e=0,t=r.length;e(a=xt(e,r,i))&&(t=a),Ki.call(this,e,t,n,r,i))}function Ki(e,t,n,r,i){var a=_t(e,t,n,r,i),o=wt(a.year,0,a.dayOfYear);return this.year(o.getUTCFullYear()),this.month(o.getUTCMonth()),this.date(o.getUTCDate()),this}function Ji(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)}U("N",0,0,"eraAbbr"),U("NN",0,0,"eraAbbr"),U("NNN",0,0,"eraAbbr"),U("NNNN",0,0,"eraName"),U("NNNNN",0,0,"eraNarrow"),U("y",["y",1],"yo","eraYear"),U("y",["yy",2],0,"eraYear"),U("y",["yyy",3],0,"eraYear"),U("y",["yyyy",4],0,"eraYear"),Ie("N",zi),Ie("NN",zi),Ie("NNN",zi),Ie("NNNN",Bi),Ie("NNNNN",Ui),Be(["N","NN","NNN","NNNN","NNNNN"],(function(e,t,n,r){var i=n._locale.erasParse(e,r,n._strict);i?v(n).era=i:v(n).invalidEra=e})),Ie("y",Oe),Ie("yy",Oe),Ie("yyy",Oe),Ie("yyyy",Oe),Ie("yo",Fi),Be(["y","yy","yyy","yyyy"],Ve),Be(["yo"],(function(e,t,n,r){var i;n._locale._eraYearOrdinalRegex&&(i=e.match(n._locale._eraYearOrdinalRegex)),n._locale.eraYearOrdinalParse?t[Ve]=n._locale.eraYearOrdinalParse(e,i):t[Ve]=parseInt(e,10)})),U(0,["gg",2],0,(function(){return this.weekYear()%100})),U(0,["GG",2],0,(function(){return this.isoWeekYear()%100})),Vi("gggg","weekYear"),Vi("ggggg","weekYear"),Vi("GGGG","isoWeekYear"),Vi("GGGGG","isoWeekYear"),ne("weekYear","gg"),ne("isoWeekYear","GG"),oe("weekYear",1),oe("isoWeekYear",1),Ie("G",Me),Ie("g",Me),Ie("GG",ke,ge),Ie("gg",ke,ge),Ie("GGGG",Ce,be),Ie("gggg",Ce,be),Ie("GGGGG",Ne,_e),Ie("ggggg",Ne,_e),Ue(["gggg","ggggg","GGGG","GGGGG"],(function(e,t,n,r){t[r.substr(0,2)]=ce(e)})),Ue(["gg","GG"],(function(e,t,n,i){t[i]=r.parseTwoDigitYear(e)})),U("Q",0,"Qo","quarter"),ne("quarter","Q"),oe("quarter",7),Ie("Q",ye),Be("Q",(function(e,t){t[He]=3*(ce(e)-1)})),U("D",["DD",2],"Do","date"),ne("date","D"),oe("date",9),Ie("D",ke),Ie("DD",ke,ge),Ie("Do",(function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient})),Be(["D","DD"],We),Be("Do",(function(e,t){t[We]=ce(e.match(ke)[0])}));var Qi=de("Date",!0);function ea(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")}U("DDD",["DDDD",3],"DDDo","dayOfYear"),ne("dayOfYear","DDD"),oe("dayOfYear",4),Ie("DDD",Ee),Ie("DDDD",we),Be(["DDD","DDDD"],(function(e,t,n){n._dayOfYear=ce(e)})),U("m",["mm",2],0,"minute"),ne("minute","m"),oe("minute",14),Ie("m",ke),Ie("mm",ke,ge),Be(["m","mm"],Ge);var ta=de("Minutes",!1);U("s",["ss",2],0,"second"),ne("second","s"),oe("second",15),Ie("s",ke),Ie("ss",ke,ge),Be(["s","ss"],Ze);var na,ra,ia=de("Seconds",!1);for(U("S",0,0,(function(){return~~(this.millisecond()/100)})),U(0,["SS",2],0,(function(){return~~(this.millisecond()/10)})),U(0,["SSS",3],0,"millisecond"),U(0,["SSSS",4],0,(function(){return 10*this.millisecond()})),U(0,["SSSSS",5],0,(function(){return 100*this.millisecond()})),U(0,["SSSSSS",6],0,(function(){return 1e3*this.millisecond()})),U(0,["SSSSSSS",7],0,(function(){return 1e4*this.millisecond()})),U(0,["SSSSSSSS",8],0,(function(){return 1e5*this.millisecond()})),U(0,["SSSSSSSSS",9],0,(function(){return 1e6*this.millisecond()})),ne("millisecond","ms"),oe("millisecond",16),Ie("S",Ee,ye),Ie("SS",Ee,ge),Ie("SSS",Ee,we),na="SSSS";na.length<=9;na+="S")Ie(na,Oe);function aa(e,t){t[Xe]=ce(1e3*("0."+e))}for(na="S";na.length<=9;na+="S")Be(na,aa);function oa(){return this._isUTC?"UTC":""}function sa(){return this._isUTC?"Coordinated Universal Time":""}ra=de("Milliseconds",!1),U("z",0,0,"zoneAbbr"),U("zz",0,0,"zoneName");var ua=k.prototype;function la(e){return Xn(1e3*e)}function ca(){return Xn.apply(null,arguments).parseZone()}function da(e){return e}ua.add=Ir,ua.calendar=Yr,ua.clone=Vr,ua.diff=$r,ua.endOf=yi,ua.format=ti,ua.from=ni,ua.fromNow=ri,ua.to=ii,ua.toNow=ai,ua.get=pe,ua.invalidAt=Ci,ua.isAfter=Hr,ua.isBefore=Wr,ua.isBetween=qr,ua.isSame=Gr,ua.isSameOrAfter=Zr,ua.isSameOrBefore=Xr,ua.isValid=Si,ua.lang=si,ua.locale=oi,ua.localeData=ui,ua.max=Kn,ua.min=$n,ua.parsingFlags=Ei,ua.set=me,ua.startOf=vi,ua.subtract=Rr,ua.toArray=_i,ua.toObject=ki,ua.toDate=bi,ua.toISOString=Qr,ua.inspect=ei,"undefined"!==typeof Symbol&&null!=Symbol.for&&(ua[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),ua.toJSON=xi,ua.toString=Jr,ua.unix=wi,ua.valueOf=gi,ua.creationData=Ni,ua.eraName=Li,ua.eraNarrow=Ti,ua.eraAbbr=ji,ua.eraYear=Ii,ua.year=vt,ua.isLeapYear=yt,ua.weekYear=Hi,ua.isoWeekYear=Wi,ua.quarter=ua.quarters=Ji,ua.month=ct,ua.daysInMonth=dt,ua.week=ua.weeks=Ot,ua.isoWeek=ua.isoWeeks=Mt,ua.weeksInYear=Zi,ua.weeksInWeekYear=Xi,ua.isoWeeksInYear=qi,ua.isoWeeksInISOWeekYear=Gi,ua.date=Qi,ua.day=ua.days=Ht,ua.weekday=Wt,ua.isoWeekday=qt,ua.dayOfYear=ea,ua.hour=ua.hours=rn,ua.minute=ua.minutes=ta,ua.second=ua.seconds=ia,ua.millisecond=ua.milliseconds=ra,ua.utcOffset=mr,ua.utc=yr,ua.local=gr,ua.parseZone=wr,ua.hasAlignedHourOffset=br,ua.isDST=_r,ua.isLocal=xr,ua.isUtcOffset=Sr,ua.isUtc=Er,ua.isUTC=Er,ua.zoneAbbr=oa,ua.zoneName=sa,ua.dates=E("dates accessor is deprecated. Use date instead.",Qi),ua.months=E("months accessor is deprecated. Use month instead",ct),ua.years=E("years accessor is deprecated. Use year instead",vt),ua.zone=E("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",vr),ua.isDSTShifted=E("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",kr);var fa=T.prototype;function ha(e,t,n,r){var i=gn(),a=p().set(r,t);return i[n](a,e)}function pa(e,t,n){if(c(e)&&(t=e,e=void 0),e=e||"",null!=t)return ha(e,t,n,"month");var r,i=[];for(r=0;r<12;r++)i[r]=ha(e,r,n,"month");return i}function ma(e,t,n,r){"boolean"===typeof e?(c(t)&&(n=t,t=void 0),t=t||""):(n=t=e,e=!1,c(t)&&(n=t,t=void 0),t=t||"");var i,a=gn(),o=e?a._week.dow:0,s=[];if(null!=n)return ha(t,(n+o)%7,r,"day");for(i=0;i<7;i++)s[i]=ha(t,(i+o)%7,r,"day");return s}function va(e,t){return pa(e,t,"months")}function ya(e,t){return pa(e,t,"monthsShort")}function ga(e,t,n){return ma(e,t,n,"weekdays")}function wa(e,t,n){return ma(e,t,n,"weekdaysShort")}function ba(e,t,n){return ma(e,t,n,"weekdaysMin")}fa.calendar=I,fa.longDateFormat=q,fa.invalidDate=Z,fa.ordinal=K,fa.preparse=da,fa.postformat=da,fa.relativeTime=Q,fa.pastFuture=ee,fa.set=P,fa.eras=Oi,fa.erasParse=Mi,fa.erasConvertYear=Pi,fa.erasAbbrRegex=Ai,fa.erasNameRegex=Ri,fa.erasNarrowRegex=Di,fa.months=at,fa.monthsShort=ot,fa.monthsParse=ut,fa.monthsRegex=ht,fa.monthsShortRegex=ft,fa.week=St,fa.firstDayOfYear=Nt,fa.firstDayOfWeek=Ct,fa.weekdays=Bt,fa.weekdaysMin=Ft,fa.weekdaysShort=Ut,fa.weekdaysParse=Vt,fa.weekdaysRegex=Gt,fa.weekdaysShortRegex=Zt,fa.weekdaysMinRegex=Xt,fa.isPM=tn,fa.meridiem=an,mn("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===ce(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),r.lang=E("moment.lang is deprecated. Use moment.locale instead.",mn),r.langData=E("moment.langData is deprecated. Use moment.localeData instead.",gn);var _a=Math.abs;function ka(){var e=this._data;return this._milliseconds=_a(this._milliseconds),this._days=_a(this._days),this._months=_a(this._months),e.milliseconds=_a(e.milliseconds),e.seconds=_a(e.seconds),e.minutes=_a(e.minutes),e.hours=_a(e.hours),e.months=_a(e.months),e.years=_a(e.years),this}function xa(e,t,n,r){var i=Or(t,n);return e._milliseconds+=r*i._milliseconds,e._days+=r*i._days,e._months+=r*i._months,e._bubble()}function Sa(e,t){return xa(this,e,t,1)}function Ea(e,t){return xa(this,e,t,-1)}function Ca(e){return e<0?Math.floor(e):Math.ceil(e)}function Na(){var e,t,n,r,i,a=this._milliseconds,o=this._days,s=this._months,u=this._data;return a>=0&&o>=0&&s>=0||a<=0&&o<=0&&s<=0||(a+=864e5*Ca(Ma(s)+o),o=0,s=0),u.milliseconds=a%1e3,e=le(a/1e3),u.seconds=e%60,t=le(e/60),u.minutes=t%60,n=le(t/60),u.hours=n%24,o+=le(n/24),s+=i=le(Oa(o)),o-=Ca(Ma(i)),r=le(s/12),s%=12,u.days=o,u.months=s,u.years=r,this}function Oa(e){return 4800*e/146097}function Ma(e){return 146097*e/4800}function Pa(e){if(!this.isValid())return NaN;var t,n,r=this._milliseconds;if("month"===(e=re(e))||"quarter"===e||"year"===e)switch(t=this._days+r/864e5,n=this._months+Oa(t),e){case"month":return n;case"quarter":return n/3;case"year":return n/12}else switch(t=this._days+Math.round(Ma(this._months)),e){case"week":return t/7+r/6048e5;case"day":return t+r/864e5;case"hour":return 24*t+r/36e5;case"minute":return 1440*t+r/6e4;case"second":return 86400*t+r/1e3;case"millisecond":return Math.floor(864e5*t)+r;default:throw new Error("Unknown unit "+e)}}function La(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*ce(this._months/12):NaN}function Ta(e){return function(){return this.as(e)}}var ja=Ta("ms"),Ia=Ta("s"),Ra=Ta("m"),Aa=Ta("h"),Da=Ta("d"),za=Ta("w"),Ba=Ta("M"),Ua=Ta("Q"),Fa=Ta("y");function Ya(){return Or(this)}function Va(e){return e=re(e),this.isValid()?this[e+"s"]():NaN}function Ha(e){return function(){return this.isValid()?this._data[e]:NaN}}var Wa=Ha("milliseconds"),qa=Ha("seconds"),Ga=Ha("minutes"),Za=Ha("hours"),Xa=Ha("days"),$a=Ha("months"),Ka=Ha("years");function Ja(){return le(this.days()/7)}var Qa=Math.round,eo={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function to(e,t,n,r,i){return i.relativeTime(t||1,!!n,e,r)}function no(e,t,n,r){var i=Or(e).abs(),a=Qa(i.as("s")),o=Qa(i.as("m")),s=Qa(i.as("h")),u=Qa(i.as("d")),l=Qa(i.as("M")),c=Qa(i.as("w")),d=Qa(i.as("y")),f=a<=n.ss&&["s",a]||a0,f[4]=r,to.apply(null,f)}function ro(e){return void 0===e?Qa:"function"===typeof e&&(Qa=e,!0)}function io(e,t){return void 0!==eo[e]&&(void 0===t?eo[e]:(eo[e]=t,"s"===e&&(eo.ss=t-1),!0))}function ao(e,t){if(!this.isValid())return this.localeData().invalidDate();var n,r,i=!1,a=eo;return"object"===typeof e&&(t=e,e=!1),"boolean"===typeof e&&(i=e),"object"===typeof t&&(a=Object.assign({},eo,t),null!=t.s&&null==t.ss&&(a.ss=t.s-1)),r=no(this,!i,a,n=this.localeData()),i&&(r=n.pastFuture(+this,r)),n.postformat(r)}var oo=Math.abs;function so(e){return(e>0)-(e<0)||+e}function uo(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n,r,i,a,o,s,u=oo(this._milliseconds)/1e3,l=oo(this._days),c=oo(this._months),d=this.asSeconds();return d?(e=le(u/60),t=le(e/60),u%=60,e%=60,n=le(c/12),c%=12,r=u?u.toFixed(3).replace(/\.?0+$/,""):"",i=d<0?"-":"",a=so(this._months)!==so(d)?"-":"",o=so(this._days)!==so(d)?"-":"",s=so(this._milliseconds)!==so(d)?"-":"",i+"P"+(n?a+n+"Y":"")+(c?a+c+"M":"")+(l?o+l+"D":"")+(t||e||u?"T":"")+(t?s+t+"H":"")+(e?s+e+"M":"")+(u?s+r+"S":"")):"P0D"}var lo=or.prototype;return lo.isValid=ir,lo.abs=ka,lo.add=Sa,lo.subtract=Ea,lo.as=Pa,lo.asMilliseconds=ja,lo.asSeconds=Ia,lo.asMinutes=Ra,lo.asHours=Aa,lo.asDays=Da,lo.asWeeks=za,lo.asMonths=Ba,lo.asQuarters=Ua,lo.asYears=Fa,lo.valueOf=La,lo._bubble=Na,lo.clone=Ya,lo.get=Va,lo.milliseconds=Wa,lo.seconds=qa,lo.minutes=Ga,lo.hours=Za,lo.days=Xa,lo.weeks=Ja,lo.months=$a,lo.years=Ka,lo.humanize=ao,lo.toISOString=uo,lo.toString=uo,lo.toJSON=uo,lo.locale=oi,lo.localeData=ui,lo.toIsoString=E("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",uo),lo.lang=si,U("X",0,0,"unix"),U("x",0,0,"valueOf"),Ie("x",Me),Ie("X",Te),Be("X",(function(e,t,n){n._d=new Date(1e3*parseFloat(e))})),Be("x",(function(e,t,n){n._d=new Date(ce(e))})),r.version="2.29.4",i(Xn),r.fn=ua,r.min=Qn,r.max=er,r.now=tr,r.utc=p,r.unix=la,r.months=va,r.isDate=d,r.locale=mn,r.invalid=g,r.duration=Or,r.isMoment=x,r.weekdays=ga,r.parseZone=ca,r.localeData=gn,r.isDuration=sr,r.monthsShort=ya,r.weekdaysMin=ba,r.defineLocale=vn,r.updateLocale=yn,r.locales=wn,r.weekdaysShort=wa,r.normalizeUnits=re,r.relativeTimeRounding=ro,r.relativeTimeThreshold=io,r.calendarFormat=Fr,r.prototype=ua,r.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},r}()},3774:function(e,t,n){e.exports.degree=n(9257),e.exports.betweenness=n(4225),e.exports.closeness=n(2662),e.exports.eccentricity=n(1735)},4225:function(e){e.exports=function(e,t){var n,r=[],i=[],a=Object.create(null),o=Object.create(null),s=Object.create(null),u=Object.create(null),l=Object.create(null);e.forEachNode((function(e){l[e.id]=0})),e.forEachNode((function(e){f(n=e.id),c()})),t||Object.keys(l).forEach((function(e){l[e]/=2}));return l;function c(){for(e.forEachNode(d);i.length;){for(var t=i.pop(),r=(1+u[t])/s[t],o=a[t],c=0;c0?(t-1)/r:0}function s(n){for(e.forEachNode((function(e){var t=e.id;i[t]=-1})),i[n]=0,r.push(n);r.length;){var a=r.shift();e.forEachLinkedNode(a,o,t)}function o(e){var t=e.id;-1===i[t]&&(i[t]=i[a]+1,r.push(t))}}}},9257:function(e){function t(e,t){var n=0;if(!e)return n;for(var r=0;r1&&(r=Array.prototype.splice.call(arguments,1));for(var a=0;a1&&(r=Array.prototype.splice.call(arguments,1));for(var a=0;a0&&a.addLink(o,r-1+i*t),i>0&&a.addLink(o,r+(i-1)*t)}return a},grid3:function(t,n,r){if(t<1||n<1||r<1)throw new Error("Invalid number of nodes in grid3 graph");var i,a,o,s=e();if(1===t&&1===n&&1===r)return s.addNode(0),s;for(o=0;o0&&s.addLink(l,i-1+a*t+u),a>0&&s.addLink(l,i+(a-1)*t+u),o>0&&s.addLink(l,i+a*t+(o-1)*t*n)}return s},noLinks:function(t){if(t<0)throw new Error("Number of nodes should be >= 0");var n,r=e();for(n=0;n=t)throw new Error("Choose smaller `k`. It cannot be larger than number of nodes `n`");var o,s,u=n(9468).random(a||42),l=e();for(o=0;o0&&r.addLink(i*n,i*n-1);return r.addLink(0,r.getNodesCount()-1),r;function a(e,t){for(var n=0;n>>19))+374761393+(e<<5)&4294967295)+3550635116^e<<9))+4251993797+(e<<3)&4294967295)^e>>>16),this.seed=e,(268435455&e)/268435456}e.exports=t,e.exports.random=t,e.exports.randomIterator=function(e,n){var r=n||t();if("function"!==typeof r.next)throw new Error("customRandom does not match expected API: next() function is missing");return{forEach:function(t){var n,i,a;for(n=e.length-1;n>0;--n)i=r.next(n+1),a=e[i],e[i]=e[n],e[n]=a,t(a);e.length&&t(e[0])},shuffle:function(){var t,n,i;for(t=e.length-1;t>0;--t)n=r.next(t+1),i=e[n],e[n]=e[t],e[t]=i;return e}}},n.prototype.next=function(e){return Math.floor(this.nextDouble()*e)},n.prototype.nextDouble=r,n.prototype.uniform=r,n.prototype.gaussian=function(){var e,t,n;do{t=2*this.nextDouble()-1,n=2*this.nextDouble()-1,e=t*t+n*n}while(e>=1||0===e);return t*Math.sqrt(-2*Math.log(e)/e)}},1700:function(e,t,n){e.exports=function(e){"uniqueLinkId"in(e=e||{})&&(console.warn("ngraph.graph: Starting from version 0.14 `uniqueLinkId` is deprecated.\nUse `multigraph` option instead\n","\n","Note: there is also change in default behavior: From now own each graph\nis considered to be not a multigraph by default (each edge is unique)."),e.multigraph=e.uniqueLinkId);void 0===e.multigraph&&(e.multigraph=!1);var t="function"===typeof Object.create?Object.create(null):{},n=[],l={},c=0,d=0,f=Object.keys?P:L,h=e.multigraph?function(e,t,n){var r=u(e,t),i=l.hasOwnProperty(r);if(i||C(e,t)){i||(l[r]=0);var a="@"+ ++l[r];r=u(e+a,t+a)}return new s(e,t,n,r)}:function(e,t,n){var r=u(e,t);return new s(e,t,n,r)},p=[],m=N,v=N,y=N,g=N,w={addNode:k,addLink:function(e,t,r){y();var i=x(e)||k(e),a=x(t)||k(t),s=h(e,t,r);n.push(s),o(i,s),e!==t&&o(a,s);return m(s,"add"),g(),s},removeLink:E,removeNode:S,getNode:x,getNodesCount:function(){return c},getLinksCount:function(){return n.length},getLinks:function(e){var t=x(e);return t?t.links:null},forEachNode:f,forEachLinkedNode:function(e,n,r){var i=x(e);if(i&&i.links&&"function"===typeof n)return r?function(e,n,r){for(var i=0;i=0&&r.links.splice(t,1),a&&(t=i(e,a.links))>=0&&a.links.splice(t,1),m(e,"remove"),g(),!0}function C(e,t){var n,r=x(e);if(!r||!r.links)return null;for(n=0;n0&&(w.fire("changed",p),p.length=0)}function P(e){if("function"===typeof e)for(var n=Object.keys(t),r=0;r=0?a:-1,i);return h.push(o),o},getTotalMovement:function(){return 0},removeSpring:function(e){if(e){var t=h.indexOf(e);return t>-1?(h.splice(t,1),!0):void 0}},getBestNewBodyPosition:function(e){return m.getBestNewPosition(e)},getBBox:function(){return g&&(m.update(),g=!1),m.box},invalidateBBox:function(){g=!0},gravity:function(t){return void 0!==t?(e.gravity=t,p.options({gravity:t}),this):e.gravity},theta:function(t){return void 0!==t?(e.theta=t,p.options({theta:t}),this):e.theta}};return r(e,w),a(w),w}},6192:function(e,t,n){e.exports=function(e,t){var r=n(2165).random(42),i={x1:0,y1:0,x2:0,y2:0};return{box:i,update:function(){var t=e.length;if(0===t)return;var n=Number.MAX_VALUE,r=Number.MAX_VALUE,a=Number.MIN_VALUE,o=Number.MIN_VALUE;for(;t--;){var s=e[t];s.isPinned?(s.pos.x=s.prevPos.x,s.pos.y=s.prevPos.y):(s.prevPos.x=s.pos.x,s.prevPos.y=s.pos.y),s.pos.xa&&(a=s.pos.x),s.pos.yo&&(o=s.pos.y)}i.x1=n,i.x2=a,i.y1=r,i.y2=o},reset:function(){i.x1=i.y1=0,i.x2=i.y2=0},getBestNewPosition:function(e){var n=i,a=0,o=0;if(e.length){for(var s=0;s1&&(u.velocity.x=c/f,u.velocity.y=d/f),r=t*u.velocity.x,a=t*u.velocity.y,u.pos.x+=r,u.pos.y+=a,i+=Math.abs(r),o+=Math.abs(a)}return(i*i+o*o)/s}},1495:function(e){e.exports=function(e,t,n,r,i){this.from=e,this.to=t,this.length=n,this.coeff=r,this.weight="number"===typeof i?i:1}},5142:function(e,t,n){e.exports=function(e){var t=n(6147),r=n(2165).random(42),i={update:function(t){var n=t.from,i=t.to,a=t.length<0?e.springLength:t.length,o=i.pos.x-n.pos.x,s=i.pos.y-n.pos.y,u=Math.sqrt(o*o+s*s);0===u&&(o=(r.nextDouble()-.5)/50,s=(r.nextDouble()-.5)/50,u=Math.sqrt(o*o+s*s));var l=u-a,c=(!t.coeff||t.coeff<0?e.springCoeff:t.coeff)*l/u*t.weight;n.force.x+=c*o,n.force.y+=c*s,i.force.x-=c*o,i.force.y-=c*s}};return n(9775)(e=t(e,{springCoeff:2e-4,springLength:80}),i,["springCoeff","springLength"]),i}},3241:function(e,t,n){function r(e,t){return 0===t?e.quad0:1===t?e.quad1:2===t?e.quad2:3===t?e.quad3:null}function i(e,t,n){0===t?e.quad0=n:1===t?e.quad1=n:2===t?e.quad2=n:3===t&&(e.quad3=n)}e.exports=function(e){(e=e||{}).gravity="number"===typeof e.gravity?e.gravity:-1,e.theta="number"===typeof e.theta?e.theta:.8;var t=n(2165).random(1984),a=n(6798),o=n(6925),s=n(1544),u=e.gravity,l=[],c=new o,d=e.theta,f=[],h=0,p=m();return{insertBodies:function(e){var t,n=Number.MAX_VALUE,r=Number.MAX_VALUE,i=Number.MIN_VALUE,a=Number.MIN_VALUE,o=e.length;t=o;for(;t--;){var s=e[t].pos.x,u=e[t].pos.y;si&&(i=s),ua&&(a=u)}var l=i-n,c=a-r;l>c?a=r+l:i=n+c;h=0,(p=m()).left=n,p.right=i,p.top=r,p.bottom=a,(t=o-1)>=0&&(p.body=e[t]);for(;t--;)v(e[t])},getRoot:function(){return p},updateBodyForce:function(e){var n,r,i,a,o=l,s=0,c=0,f=1,h=0,m=1;o[0]=p;for(;f;){var v=o[h],y=v.body;f-=1,h+=1;var g=y!==e;y&&g?(r=y.pos.x-e.pos.x,i=y.pos.y-e.pos.y,0===(a=Math.sqrt(r*r+i*i))&&(r=(t.nextDouble()-.5)/50,i=(t.nextDouble()-.5)/50,a=Math.sqrt(r*r+i*i)),n=u*y.mass*e.mass/(a*a*a),s+=n*r,c+=n*i):g&&(r=v.massX/v.mass-e.pos.x,i=v.massY/v.mass-e.pos.y,0===(a=Math.sqrt(r*r+i*i))&&(r=(t.nextDouble()-.5)/50,i=(t.nextDouble()-.5)/50,a=Math.sqrt(r*r+i*i)),(v.right-v.left)/a0&&s(u.pos,o.pos));if(0===l&&s(u.pos,o.pos))return}c.push(a,u),c.push(a,o)}else{var v=o.pos.x,y=o.pos.y;a.mass=a.mass+o.mass,a.massX=a.massX+o.mass*v,a.massY=a.massY+o.mass*y;var g=0,w=a.left,b=(a.right+w)/2,_=a.top,k=(a.bottom+_)/2;v>b&&(g+=1,w=b,b=a.right),y>k&&(g+=2,_=k,k=a.bottom);var x=r(a,g);x?c.push(x,o):((x=m()).left=w,x.top=_,x.right=b,x.bottom=k,x.body=o,i(a,g,x))}}}}},6925:function(e){function t(){this.stack=[],this.popIdx=0}function n(e,t){this.node=e,this.body=t}e.exports=t,t.prototype={isEmpty:function(){return 0===this.popIdx},push:function(e,t){var r=this.stack[this.popIdx];r?(r.node=e,r.body=t):this.stack[this.popIdx]=new n(e,t),++this.popIdx},pop:function(){if(this.popIdx>0)return this.stack[--this.popIdx]},reset:function(){this.popIdx=0}}},1544:function(e){e.exports=function(e,t){var n=Math.abs(e.x-t.x),r=Math.abs(e.y-t.y);return n<1e-8&&r<1e-8}},6798:function(e){e.exports=function(){this.body=null,this.quad0=null,this.quad1=null,this.quad2=null,this.quad3=null,this.mass=0,this.massX=0,this.massY=0,this.left=0,this.top=0,this.bottom=0,this.right=0}},2165:function(e){function t(e){var t="number"===typeof e?e:+new Date,n=function(){return(268435455&(t=4294967295&(3042594569^(t=(t=4294967295&((t=(t=4294967295&(3345072700^(t=t+2127912214+(t<<12)&4294967295)^t>>>19))+374761393+(t<<5)&4294967295)+3550635116^t<<9))+4251993797+(t<<3)&4294967295)^t>>>16)))/268435456};return{next:function(e){return Math.floor(n()*e)},nextDouble:function(){return n()}}}e.exports={random:t,randomIterator:function(e,n){var r=n||t();if("function"!==typeof r.next)throw new Error("customRandom does not match expected API: next() function is missing");return{forEach:function(t){var n,i,a;for(n=e.length-1;n>0;--n)i=r.next(n+1),a=e[i],e[i]=e[n],e[n]=a,t(a);e.length&&t(e[0])},shuffle:function(){var t,n,i;for(t=e.length-1;t>0;--t)n=r.next(t+1),i=e[n],e[n]=e[t],e[t]=i;return e}}}}},6262:function(e){e.exports=function(e,t,n){var r={nodes:[],links:[]},i=t||function(e){var t={id:e.id};void 0!==e.data&&(t.data=e.data);return t},a=n||function(e){var t={fromId:e.fromId,toId:e.toId};void 0!==e.data&&(t.data=e.data);return t};return e.forEachNode((function(e){r.nodes.push(i(e))})),e.forEachLink((function(e){r.links.push(a(e))})),JSON.stringify(r)}},6151:function(e,t,n){var r=n(1571);e.exports=h,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=f;var i=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,o=0,s="",c=t&&t.delimiter||"/";null!=(n=i.exec(e));){var d=n[0],f=n[1],h=n.index;if(s+=e.slice(o,h),o=h+d.length,f)s+=f[1];else{var p=e[o],m=n[2],v=n[3],y=n[4],g=n[5],w=n[6],b=n[7];s&&(r.push(s),s="");var _=null!=m&&null!=p&&p!==m,k="+"===w||"*"===w,x="?"===w||"*"===w,S=n[2]||c,E=y||g;r.push({name:v||a++,prefix:m||"",delimiter:S,optional:x,repeat:k,partial:_,asterisk:!!b,pattern:E?l(E):b?".*":"[^"+u(S)+"]+?"})}}return o
;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const isDuplicateNavigation = createPath(context.location) === createPath(normalizeToLocation(location));\n const method = (replace || isDuplicateNavigation) ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\", // TODO: deprecate\n activeStyle, // TODO: deprecate\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n let className =\n typeof classNameProp === \"function\"\n ? classNameProp(isActive)\n : classNameProp;\n\n let style =\n typeof styleProp === \"function\" ? styleProp(isActive) : styleProp;\n\n if (isActive) {\n className = joinClassnames(className, activeClassName);\n style = { ...style, ...activeStyle };\n }\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\",\n \"false\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.func])\n };\n}\n\nexport default NavLink;\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get.bind();\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHome = function SvgHome(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18 18V6.80002L10 2.00002L2 6.80002V18H6V14.918C6 13.8572 6.42143 12.8397 7.17157 12.0896C7.92172 11.3394 8.93913 10.918 10 10.918C11.0609 10.918 12.0783 11.3394 12.8284 12.0896C13.5786 12.8397 14 13.8572 14 14.918V18H18ZM12 20V14.918C12 14.3876 11.7893 13.8789 11.4142 13.5038C11.0391 13.1287 10.5304 12.918 10 12.918C9.46957 12.918 8.96086 13.1287 8.58579 13.5038C8.21071 13.8789 8 14.3876 8 14.918V20H2C1.46957 20 0.960859 19.7893 0.585786 19.4142C0.210714 19.0391 0 18.5304 0 18L0 6.80002C-3.32274e-06 6.45465 0.0894306 6.11516 0.259593 5.81462C0.429755 5.51407 0.674847 5.26271 0.971 5.08502L8.971 0.285019C9.28183 0.0985175 9.63751 0 10 0C10.3625 0 10.7182 0.0985175 11.029 0.285019L19.029 5.08502C19.3252 5.26271 19.5702 5.51407 19.7404 5.81462C19.9106 6.11516 20 6.45465 20 6.80002V18C20 18.5304 19.7893 19.0391 19.4142 19.4142C19.0391 19.7893 18.5304 20 18 20H12Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHome);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/home.cddfeea549634083903fb255dae8714d.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMoon = function SvgMoon(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m19.49261,11.36231c-0.20411,-0.05103 -0.40822,0 -0.58682,0.12757c-0.66336,0.56131 -1.42878,1.02056 -2.27074,1.32672c-0.79093,0.30617 -1.6584,0.45925 -2.5769,0.45925c-2.06662,0 -3.95465,-0.84196 -5.30689,-2.19419c-1.35224,-1.35224 -2.19419,-3.24026 -2.19419,-5.30689c0,-0.86747 0.15308,-1.70943 0.40822,-2.47485c0.28065,-0.81644 0.68887,-1.55635 1.22467,-2.19419c0.22962,-0.28065 0.1786,-0.68887 -0.10206,-0.9185c-0.1786,-0.12757 -0.38271,-0.1786 -0.58682,-0.12757c-2.16868,0.58682 -4.05671,1.88803 -5.40894,3.62297c-1.30121,1.70943 -2.09214,3.82708 -2.09214,6.14885c0,2.78101 1.12261,5.30689 2.95961,7.14389s4.36287,2.95961 7.14389,2.95961c2.34728,0 4.51596,-0.81644 6.2509,-2.16868c1.76046,-1.37775 3.03615,-3.34232 3.57194,-5.58754c0.12757,-0.38271 -0.07654,-0.7399 -0.43374,-0.81644zm-3.90362,5.3324c-1.47981,1.17364 -3.36783,1.88803 -5.43446,1.88803c-2.42382,0 -4.61801,-0.99504 -6.19987,-2.5769c-1.58186,-1.58186 -2.5769,-3.77605 -2.5769,-6.19987c0,-2.0156 0.66336,-3.8526 1.81149,-5.3324c0.79093,-1.02056 1.78597,-1.86251 2.9341,-2.44933c-0.12757,0.28065 -0.25514,0.56131 -0.35719,0.86747c-0.33168,0.9185 -0.48476,1.88803 -0.48476,2.90858c0,2.42382 0.99504,4.64353 2.5769,6.22539s3.80157,2.5769 6.22539,2.5769c1.07158,0 2.09214,-0.1786 3.03615,-0.53579c0.33168,-0.12757 0.66336,-0.25514 0.96953,-0.40822c-0.61233,1.17364 -1.45429,2.21971 -2.50036,3.03615z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMoon);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/moon.02520db67ef1c88d6308394bfd328eec.svg\";","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPadlockUnlocked = function SvgPadlockUnlocked(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m21.87281,24l-12.02632,0c-1.10464,0 -2.00439,-1.009 -2.00439,-2.25l0,-10.5c0,-1.241 0.89975,-2.25 2.00439,-2.25l12.02632,0c1.10464,0 2.00439,1.009 2.00439,2.25l0,10.5c0,1.241 -0.89975,2.25 -2.00439,2.25zm-12.02632,-13.5c-0.36792,0 -0.66813,0.336 -0.66813,0.75l0,10.5c0,0.414 0.30021,0.75 0.66813,0.75l12.02632,0c0.36792,0 0.66813,-0.336 0.66813,-0.75l0,-10.5c0,-0.414 -0.30021,-0.75 -0.66813,-0.75l-12.02632,0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.35526,10.5c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-3.75c0,-2.481 -2.019,-4.5 -4.5,-4.5s-4.5,2.019 -4.5,4.5l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75s-0.75,-0.336 -0.75,-0.75l0,-3.75c0,-3.309 2.691,-6 6,-6s6,2.691 6,6l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15.7193,17c-1.103,0 -2,-0.897 -2,-2s0.897,-2 2,-2s2,0.897 2,2s-0.897,2 -2,2zm0,-2.5c-0.275,0 -0.5,0.224 -0.5,0.5s0.225,0.5 0.5,0.5s0.5,-0.224 0.5,-0.5s-0.225,-0.5 -0.5,-0.5z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15.7193,20c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-2.75c0,-0.414 0.336,-0.75 0.75,-0.75s0.75,0.336 0.75,0.75l0,2.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPadlockUnlocked);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/padlock-unlocked.75e5a880128abbe6315c53b5b3b68cdd.svg\";","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPadlock = function SvgPadlock(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m18.75,24l-13.5,0c-1.24,0 -2.25,-1.009 -2.25,-2.25l0,-10.5c0,-1.241 1.01,-2.25 2.25,-2.25l13.5,0c1.24,0 2.25,1.009 2.25,2.25l0,10.5c0,1.241 -1.01,2.25 -2.25,2.25zm-13.5,-13.5c-0.413,0 -0.75,0.336 -0.75,0.75l0,10.5c0,0.414 0.337,0.75 0.75,0.75l13.5,0c0.413,0 0.75,-0.336 0.75,-0.75l0,-10.5c0,-0.414 -0.337,-0.75 -0.75,-0.75l-13.5,0z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.25,10.5c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-3.75c0,-2.481 -2.019,-4.5 -4.5,-4.5s-4.5,2.019 -4.5,4.5l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75s-0.75,-0.336 -0.75,-0.75l0,-3.75c0,-3.309 2.691,-6 6,-6s6,2.691 6,6l0,3.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,17c-1.103,0 -2,-0.897 -2,-2s0.897,-2 2,-2s2,0.897 2,2s-0.897,2 -2,2zm0,-2.5c-0.275,0 -0.5,0.224 -0.5,0.5s0.225,0.5 0.5,0.5s0.5,-0.224 0.5,-0.5s-0.225,-0.5 -0.5,-0.5z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m12,20c-0.414,0 -0.75,-0.336 -0.75,-0.75l0,-2.75c0,-0.414 0.336,-0.75 0.75,-0.75s0.75,0.336 0.75,0.75l0,2.75c0,0.414 -0.336,0.75 -0.75,0.75z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPadlock);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/padlock.5326d93aa17bb9e1a9ecf7fa84281cce.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPeers = function SvgPeers(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7.6569 5.62329C7.03439 7.02356 5.63123 8 4 8C1.79086 8 0 6.20914 0 4C0 1.79086 1.79086 0 4 0C6.09134 0 7.80782 1.60496 7.98493 3.65037L12.3431 4.37673C12.9656 2.97645 14.3688 2 16 2C18.2091 2 20 3.79086 20 6C20 8.20914 18.2091 10 16 10C14.9749 10 14.04 9.61443 13.3321 8.9804L7.77815 12.6831C7.88518 12.9902 7.95583 13.3143 7.98493 13.6504L12.3431 14.3767C12.9656 12.9764 14.3688 12 16 12C18.2091 12 20 13.7909 20 16C20 18.2091 18.2091 20 16 20C13.9087 20 12.1922 18.3951 12.0151 16.3497L7.6569 15.6233C7.03439 17.0236 5.63123 18 4 18C1.79086 18 0 16.2091 0 14C0 11.7909 1.79086 10 4 10C5.02504 10 5.96002 10.3856 6.66784 11.0196L12.2218 7.3169C12.1148 7.00981 12.0442 6.68568 12.0151 6.34965L7.6569 5.62329ZM6 4C6 5.10457 5.10457 6 4 6C2.89543 6 2 5.10457 2 4C2 2.89543 2.89543 2 4 2C5.10457 2 6 2.89543 6 4ZM16 8C17.1046 8 18 7.10457 18 6C18 4.89543 17.1046 4 16 4C14.8954 4 14 4.89543 14 6C14 7.10457 14.8954 8 16 8ZM6 14C6 15.1046 5.10457 16 4 16C2.89543 16 2 15.1046 2 14C2 12.8954 2.89543 12 4 12C5.10457 12 6 12.8954 6 14ZM16 18C17.1046 18 18 17.1046 18 16C18 14.8954 17.1046 14 16 14C14.8954 14 14 14.8954 14 16C14 17.1046 14.8954 18 16 18Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPeers);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/peers.a62e2ab119894525f731b60d32f84cf2.svg\";","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _path9;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgSun = function SvgSun(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m13.48664,6.42723c-0.8956,-0.8956 -2.15997,-1.4751 -3.52971,-1.4751s-2.63411,0.55316 -3.52971,1.4751c-0.8956,0.8956 -1.4751,2.15997 -1.4751,3.52971s0.5795,2.63411 1.4751,3.52971c0.8956,0.8956 2.15997,1.4751 3.52971,1.4751s2.63411,-0.55316 3.52971,-1.4751c0.8956,-0.8956 1.4751,-2.15997 1.4751,-3.52971s-0.55316,-2.63411 -1.4751,-3.52971zm-0.94828,6.11114c-0.65853,0.65853 -1.58047,1.05364 -2.58143,1.05364s-1.9229,-0.39512 -2.58143,-1.05364s-1.05364,-1.58047 -1.05364,-2.58143s0.39512,-1.9229 1.05364,-2.58143s1.58047,-1.05364 2.58143,-1.05364s1.9229,0.39512 2.58143,1.05364s1.05364,1.58047 1.05364,2.58143s-0.39512,1.9229 -1.05364,2.58143z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m19.229,9.27207l-2.02826,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487c0,0.36878 0.31609,0.68487 0.68487,0.68487l2.02826,0c0.36878,0 0.68487,-0.31609 0.68487,-0.68487c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.95694,16.51587c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487l0,2.02826c0,0.36878 0.31609,0.68487 0.68487,0.68487c0.36878,0 0.68487,-0.31609 0.68487,-0.68487l0,-2.02826c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m16.99001,16.04173l-1.44876,-1.44876c-0.23707,-0.26341 -0.68487,-0.26341 -0.94828,0s-0.26341,0.68487 0,0.94828l1.44876,1.44876c0.26341,0.26341 0.68487,0.26341 0.94828,0s0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m9.95694,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487l0,2.02826c0,0.36878 0.31609,0.68487 0.68487,0.68487c0.36878,0 0.68487,-0.31609 0.68487,-0.68487l0,-2.02826c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m17.01635,2.92386c-0.26341,-0.26341 -0.68487,-0.26341 -0.94828,0l-1.44876,1.44876c-0.26341,0.26341 -0.26341,0.68487 0,0.94828c0.23707,0.26341 0.68487,0.26341 0.94828,0l1.44876,-1.44876c0.26341,-0.26341 0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m2.71313,9.27207l-2.02826,0c-0.36878,0 -0.68487,0.31609 -0.68487,0.68487s0.28975,0.68487 0.68487,0.68487l2.02826,0c0.36878,0 0.68487,-0.31609 0.68487,-0.68487c0,-0.36878 -0.31609,-0.68487 -0.68487,-0.68487z\",\n fill: \"currentColor\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.29456,14.59297c-0.23707,-0.26341 -0.68487,-0.26341 -0.94828,0l-1.44876,1.44876c-0.26341,0.26341 -0.26341,0.68487 0,0.94828s0.68487,0.26341 0.94828,0l1.44876,-1.44876c0.26341,-0.26341 0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m5.29456,4.37262l-1.44876,-1.44876c-0.26341,-0.26341 -0.68487,-0.26341 -0.94828,0s-0.26341,0.68487 0,0.94828l1.44876,1.44876c0.26341,0.26341 0.68487,0.26341 0.94828,0s0.26341,-0.68487 0,-0.94828z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgSun);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/sun.b34d19d4622b283d411a5a36eeb87adb.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgVisualizer = function SvgVisualizer(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.694333 17.3063C-1.21567 15.3943 0.952333 10.1263 5.53933 5.53935C10.1263 0.952348 15.3943 -1.21665 17.3063 0.694348C19.2163 2.60635 17.0483 7.87435 12.4613 12.4613C7.87433 17.0483 2.60633 19.2173 0.694333 17.3063ZM2.08033 15.9203C2.89533 16.7363 7.18233 14.9703 11.0773 11.0753C14.9723 7.18035 16.7373 2.89335 15.9223 2.07835C15.1073 1.26235 10.8203 3.02835 6.92533 6.92335C3.03033 10.8183 1.26533 15.1053 2.08033 15.9203ZM5.54033 12.4603C0.952333 7.87435 -1.21667 2.60635 0.694333 0.694348C2.60633 -1.21565 7.87433 0.952348 12.4613 5.53935C17.0483 10.1263 19.2173 15.3943 17.3063 17.3063C15.3943 19.2163 10.1263 17.0483 5.53933 12.4613L5.54033 12.4603ZM6.92533 11.0753C10.8203 14.9703 15.1073 16.7353 15.9223 15.9203C16.7383 15.1053 14.9723 10.8183 11.0773 6.92335C7.18233 3.02835 2.89533 1.26335 2.08033 2.07835C1.26433 2.89335 3.03033 7.18035 6.92533 11.0753ZM9.00033 11.0003C8.4699 11.0003 7.96119 10.7896 7.58612 10.4146C7.21105 10.0395 7.00033 9.53078 7.00033 9.00035C7.00033 8.46992 7.21105 7.96121 7.58612 7.58613C7.96119 7.21106 8.4699 7.00035 9.00033 7.00035C9.53077 7.00035 10.0395 7.21106 10.4145 7.58613C10.7896 7.96121 11.0003 8.46992 11.0003 9.00035C11.0003 9.53078 10.7896 10.0395 10.4145 10.4146C10.0395 10.7896 9.53077 11.0003 9.00033 11.0003Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgVisualizer);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/visualizer.66663d336132c1451c6c07149f519427.svg\";","export enum WebSocketTopic {\n SyncStatus = 0,\n PublicNodeStatus = 1,\n NodeInfoExtended = 2,\n GossipMetrics = 3,\n PeerMetrics = 4,\n NetworkMetrics = 5,\n DatabaseSizeMetric = 6,\n VisualizerVertex = 7,\n VisualizerBlockStateInfo = 8,\n VisualizerTipInfo = 9,\n}\n","/**\n * Factory for creating services.\n */\nexport class ServiceFactory {\n /**\n * Store the service callbacks.\n */\n private static readonly _services: { [name: string]: (serviceName: string) => unknown } = {};\n\n /**\n * Store the created instances.\n */\n private static readonly _instances: { [name: string]: unknown } = {};\n\n /**\n * Register a new service.\n * @param name The name of the service.\n * @param instanceCallback The callback to create an instance.\n */\n public static register(name: string, instanceCallback: (serviceName: string) => unknown): void {\n this._services[name] = instanceCallback;\n }\n\n /**\n * Unregister a service.\n * @param name The name of the service to unregister.\n */\n public static unregister(name: string): void {\n delete this._services[name];\n }\n\n /**\n * Get a service instance.\n * @param name The name of the service to get.\n * @returns An instance of the service.\n */\n public static get(name: string): T {\n if (!this._instances[name] && this._services[name]) {\n this._instances[name] = this._services[name](name);\n }\n return this._instances[name] as T;\n }\n}\n","/**\n * Class to manage event aggregation.\n */\nexport class EventAggregator {\n /**\n * The stored subscriptions.\n */\n private static readonly _subscriptions: {\n [eventName: string]: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [subscriberId: string]: (data: any) => void;\n };\n } = {};\n\n /**\n * Subscribe to an event.\n * @param eventName The name of the event to subscribe to.\n * @param subscriberId The id of the subscriber.\n * @param handler The handle to call on a publish.\n */\n public static subscribe(\n eventName: string,\n subscriberId: string,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n handler: (data: any) => void | Promise): void {\n EventAggregator._subscriptions[eventName] ||= {};\n EventAggregator._subscriptions[eventName][subscriberId] = handler;\n }\n\n /**\n * Unsubscribe from an event.\n * @param eventName The name of the event to subscribe to.\n * @param subscriberId The id of the subscriber.\n */\n public static unsubscribe(eventName: string, subscriberId: string): void {\n if (EventAggregator._subscriptions[eventName]) {\n delete EventAggregator._subscriptions[eventName][subscriberId];\n }\n }\n\n /**\n * Publish the event.\n * @param eventName The name of the event to publish.\n * @param data The data to publish with the event.\n */\n public static publish(eventName: string, data?: unknown): void {\n setTimeout(\n () => {\n if (EventAggregator._subscriptions[eventName]) {\n for (const subscriberId in EventAggregator._subscriptions[eventName]) {\n EventAggregator._subscriptions[eventName][subscriberId](data);\n }\n }\n },\n 0);\n }\n}\n","/* eslint-disable @typescript-eslint/no-require-imports */\n/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { IBrandConfiguration } from \"../models/IBrandConfiguration\";\n\nexport class BrandHelper {\n /**\n * The brand id from the environment.\n */\n private static readonly _brandId?: string = process.env.REACT_APP_BRAND_ID;\n\n /**\n * The brand configuration.\n */\n private static _brandConfiguration: IBrandConfiguration;\n\n /**\n * Initialize the branding.\n * @returns The brand configuration.\n */\n public static initialize(): IBrandConfiguration | undefined {\n if (BrandHelper._brandId) {\n BrandHelper._brandConfiguration = require(`../assets/${BrandHelper._brandId}/brand.json`);\n document.title = `${BrandHelper._brandConfiguration.name} Dashboard`;\n\n return BrandHelper._brandConfiguration;\n }\n }\n\n /**\n * Get the configuration.\n * @returns The configuration.\n */\n public static getConfiguration(): IBrandConfiguration {\n return BrandHelper._brandConfiguration;\n }\n\n /**\n * Get the logo for the navigation panel.\n * @param theme The current theme.\n * @returns The navigation panel logo.\n */\n public static async getLogoNavigation(theme: string): Promise {\n const logo = await import(`../assets/${BrandHelper._brandId}/themes/${theme}/logo-navigation.svg`);\n return logo.default;\n }\n\n /**\n * Get the logo for the home page banner.\n * @param theme The current theme.\n * @returns The banner panel logo.\n */\n public static async getBanner(theme: string): Promise {\n const banner = await import(`../assets/${BrandHelper._brandId}/themes/${theme}/banner.svg`);\n return banner.default;\n }\n}\n","import { Component } from \"react\";\n\n/**\n * Base component for component with async requests.\n */\nclass AsyncComponent extends Component {\n /**\n * Is the component mounted.\n */\n protected _isMounted?: boolean;\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._isMounted = true;\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n this._isMounted = false;\n }\n\n /**\n * Set the state if the component is still mounted.\n * @param state The state to set.\n * @param callback The callback for the setState.\n */\n public setState(\n state: ((prevState: Readonly, props: Readonly

) => (Pick | S | null)) | (Pick | S | null),\n callback?: () => void\n ): void {\n if (this._isMounted) {\n super.setState(state, callback);\n }\n }\n}\n\nexport default AsyncComponent;\n","import { Component, ReactNode } from \"react\";\nimport { BreakpointProps } from \"./BreakpointProps\";\nimport { BreakpointState } from \"./BreakpointState\";\n\n/**\n * Component to show/hide children based on media size breakpoints.\n */\nclass Breakpoint extends Component {\n /**\n * The size for the breakpoints.\n */\n private static readonly SIZE_BREAKPOINTS = {\n \"phone\": 480,\n \"tablet\": 768,\n \"desktop\": 1024\n };\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Create a new instance of Breakpoint.\n * @param props The props.\n */\n constructor(props: BreakpointProps) {\n super(props);\n\n this._resize = () => this.resize();\n\n this.state = {\n isVisible: this.calculateVisible()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n window.addEventListener(\"resize\", this._resize);\n }\n\n /**\n * The component will unmount so update flag.\n */\n public componentWillUnmount(): void {\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return this.state.isVisible\n ? this.props.children\n : null;\n }\n\n /**\n * Handle the window resize.\n */\n private resize(): void {\n const isVisible = this.calculateVisible();\n\n this.setState({\n isVisible\n });\n }\n\n /**\n * Calculate if the child components should be visible.\n * @returns True if the children should be visible.\n */\n private calculateVisible(): boolean {\n const windowSize = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n\n return this.props.aboveBelow === \"above\"\n ? windowSize >= Breakpoint.SIZE_BREAKPOINTS[this.props.size]\n : windowSize < Breakpoint.SIZE_BREAKPOINTS[this.props.size];\n }\n}\n\nexport default Breakpoint;\n","import humanize from \"humanize-duration\";\nimport moment from \"moment\";\n\n/**\n * Class to help formatting values.\n */\nexport class FormatHelper {\n /**\n * The singleton instance.\n */\n private static instance: FormatHelper;\n\n /**\n * Get the FormatHelper singleton instance.\n * @returns The FormatHelper instance.\n */\n public static getInstance(): FormatHelper {\n if (!FormatHelper.instance) {\n FormatHelper.instance = new FormatHelper();\n }\n\n return FormatHelper.instance;\n }\n\n /**\n * Format the duration as human readable.\n * @param milliseconds The milliseconds total for the duration.\n * @returns The formatted duration.\n */\n public static duration(milliseconds: number): string {\n if (milliseconds < 3600000) {\n return humanize(milliseconds, { largest: 1, round: true });\n }\n\n return humanize(milliseconds, { largest: 2, round: true });\n }\n\n /**\n * Format the bytes to a human readable size. (SI standard)\n * @param bytes The bytes to format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted string.\n */\n public static size(bytes: number, decimalPlaces: number = 2): string {\n if (!bytes) {\n return \"0 bytes\";\n }\n\n const index = Math.floor(Math.log(bytes) / Math.log(1000));\n const units = [\"bytes\", \"kB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\n\n const value = Number((bytes / Math.pow(1000, index)).toFixed(decimalPlaces));\n let unit = units[index];\n\n if (unit === \"bytes\" && value === 1) {\n unit = \"byte\";\n }\n\n if (unit === undefined) {\n return bytes.toFixed(decimalPlaces).toString();\n }\n\n return `${value} ${unit}`;\n }\n\n /**\n * Format the bytes to a human readable size. (IEC standard)\n * @param bytes The bytes to format.\n * @param decimalPlaces The number of decimal places.\n * @returns The formatted string.\n */\n public static iSize(bytes: number, decimalPlaces: number = 2): string {\n if (!bytes) {\n return \"0 bytes\";\n }\n\n const index = Math.floor(Math.log(bytes) / Math.log(1024));\n const units = [\"bytes\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\", \"EiB\", \"ZiB\", \"YiB\"];\n\n const value = Number((bytes / Math.pow(1024, index)).toFixed(decimalPlaces));\n let unit = units[index];\n\n if (unit === \"bytes\" && value === 1) {\n unit = \"byte\";\n }\n\n if (unit === undefined) {\n return bytes.toFixed(decimalPlaces).toString();\n }\n\n return `${value} ${unit}`;\n }\n\n /**\n * Format the date.\n * @param valueInMs The value to format in milliseconds.\n * @param human Humanize the date.\n * @returns The formated value.\n */\n public static date(valueInMs: number, human: boolean = true): string {\n valueInMs = FormatHelper.milliseconds(valueInMs);\n\n const timeMoment = moment(valueInMs);\n let formatted = timeMoment.format(\"LLLL\");\n\n if (human) {\n const postDate = valueInMs > Date.now() ? \"in the future\" : \"ago\";\n\n formatted += ` - ${moment.duration(moment().diff(timeMoment)).humanize()} ${postDate}`;\n }\n return formatted;\n }\n\n /**\n * Format the date in short format.\n * @param valueInMs The value to format in milliseconds.\n * @returns The formated value.\n */\n public static dateShort(valueInMs: number): string {\n return moment(FormatHelper.milliseconds(valueInMs)).format(\"YYYY-MM-DD HH:mm\");\n }\n\n /**\n * Check the value is in ms if not scale accordingly.\n * @param valueInMs The value to format in milliseconds.\n * @returns The updated value.\n */\n public static milliseconds(valueInMs: number): number {\n const asStringLength = valueInMs.toString().length;\n\n // If there are less than 13 digits this must be in seconds\n // https://stackoverflow.com/questions/23929145/how-to-test-if-a-given-time-stamp-is-in-seconds-or-milliseconds\n if (asStringLength < 13) {\n return valueInMs * 1000;\n }\n return valueInMs;\n }\n}\n","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthBad = function SvgHealthBad(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#FF6755\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#FF6755\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthBad);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-bad.f6b3a99f588b20aef147dd8cada3356f.svg\";","var _circle, _circle2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgHealthGood = function SvgHealthGood(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n opacity: 0.4,\n cx: 8,\n cy: 8,\n r: 8,\n fill: \"#61E884\"\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 8,\n cy: 8,\n r: 4,\n fill: \"#61E884\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgHealthGood);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/health-good.c06d31b2b699112b161f07c13711dc20.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgBannerCurve = function SvgBannerCurve(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n style: {\n isolation: \"isolate\"\n },\n viewBox: \"0 0 34 140\",\n width: \"34px\",\n height: \"140px\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \" M 34 140 L 0.02 140 L 0.02 140 C 0.007 138.835 0 137.668 0 136.5 L 0 136.5 C 0 87.365 11.818 40.968 32.765 0 L 34 0 L 34 140 Z \",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgBannerCurve);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/banner-curve.abe8a24f8be162bfc9ff259fbfdaa7d8.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as HealthBadIcon } from \"../../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../../assets/health-good.svg\";\nimport \"./HealthIndicator.scss\";\nimport { HealthIndicatorProps } from \"./HealthIndicatorProps\";\n\n/**\n * Health Indicator.\n */\nclass HealthIndicator extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n

\n {this.props.healthy ? : }\n {this.props.label}\n
\n );\n }\n}\n\nexport default HealthIndicator;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./MicroGraph.scss\";\nimport { MicroGraphProps } from \"./MicroGraphProps\";\nimport { MicroGraphState } from \"./MicroGraphState\";\n\n/**\n * Micro Graph.\n */\nclass MicroGraph extends Component {\n /**\n * The graph width.\n */\n private readonly _graphWidth: number;\n\n /**\n * The graph height.\n */\n private readonly _graphHeight: number;\n\n /**\n * Create a new instance of MicroGraph.\n * @param props The props.\n */\n constructor(props: MicroGraphProps) {\n super(props);\n\n this._graphWidth = this.props.graphWidth ?? 80;\n this._graphHeight = this.props.graphHeight ?? 10;\n\n this.state = {\n ...this.calculateGraph()\n };\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: MicroGraphProps): void {\n if (this.props.values !== prevProps.values) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n {this.props.label}\n {this.props.value}\n \n \n {this.state.graphPoints && this.state.graphPoints.length > 0 && (\n `${g.type} ${g.x} ${g.y}`).join(\" \")}\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n />\n )}\n {this.state.circle && this.state.circle.x >= 0 && (\n \n )}\n \n \n
\n );\n }\n\n /**\n * Calculate the graph points.\n * @returns The graph points.\n */\n private calculateGraph(): {\n graphPoints: {\n type: string;\n x: number;\n y: number;\n }[];\n circle: {\n x: number;\n y: number;\n };\n } {\n const graphPointCount = this._graphWidth / 2;\n\n const lastItems = this.props.values.slice(-graphPointCount);\n let min;\n let max;\n let circleX = -1;\n let circleY = -1;\n\n for (let i = 0; i < lastItems.length; i++) {\n if (min === undefined || lastItems[i] < min) {\n min = lastItems[i];\n }\n if (max === undefined || lastItems[i] > max) {\n max = lastItems[i];\n }\n }\n\n const graphPoints = [];\n if (max !== undefined && min !== undefined) {\n const range = max - min;\n const scale = range === 0 ? 1 : range / this._graphHeight;\n\n let lastY = (lastItems[0] - min) / scale;\n graphPoints.push({\n type: \"M\",\n x: 0,\n y: this._graphHeight - lastY\n });\n\n const xIncrement = (graphPointCount / lastItems.length) * 2;\n for (let i = 1; i < lastItems.length; i++) {\n const y = (lastItems[i] - min) / scale;\n graphPoints.push({\n type: \"l\",\n x: xIncrement,\n y: (y - lastY) * -1\n });\n lastY = y;\n }\n\n circleX = (lastItems.length - 1) * xIncrement;\n circleY = 10 - lastY;\n }\n\n return {\n graphPoints,\n circle: { x: circleX, y: circleY }\n };\n }\n}\n\nexport default MicroGraph;\n","import React, { ReactNode } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IDatabaseSizesMetrics } from \"../../../models/websocket/IDatabaseSizesMetrics\";\nimport { IGossipMetrics } from \"../../../models/websocket/IGossipMetrics\";\nimport { INodeInfoExtended } from \"../../../models/websocket/INodeInfoExtended\";\nimport { IPublicNodeStatus } from \"../../../models/websocket/IPublicNodeStatus\";\nimport { WebSocketTopic } from \"../../../models/websocket/webSocketTopic\";\nimport { AuthService } from \"../../../services/authService\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { MetricsService } from \"../../../services/metricsService\";\nimport { FormatHelper } from \"../../../utils/formatHelper\";\nimport AsyncComponent from \"./AsyncComponent\";\nimport Breakpoint from \"./Breakpoint\";\nimport \"./Header.scss\";\nimport { HeaderProps } from \"./HeaderProps\";\nimport { HeaderState } from \"./HeaderState\";\nimport HealthIndicator from \"./HealthIndicator\";\nimport MicroGraph from \"./MicroGraph\";\n\n/**\n * Header panel.\n */\nclass Header extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The node info extended subscription id.\n */\n private _nodeInfoExtendedSubscription?: string;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The database size metrics subscription id.\n */\n private _databaseSizeMetricsSubscription?: string;\n\n /**\n * The gossip metrics subscription id.\n */\n private _gossipMetricsSubscription?: string;\n\n /**\n * Create a new instance of Header.\n * @param props The props.\n */\n constructor(props: RouteComponentProps & HeaderProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n isNetworkHealthy: false,\n isNodeHealthy: false,\n bps: \"-\",\n bpsValues: [],\n memorySizeFormatted: \"-\",\n memorySize: [],\n dbSizeTotalFormatted: \"-\",\n dbSizeTotal: [],\n isLoggedIn: Boolean(this._authService.isLoggedIn()),\n online: false\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n EventAggregator.subscribe(\"auth-state\", \"header\", isLoggedIn => {\n this.setState({\n isLoggedIn\n });\n });\n\n EventAggregator.subscribe(\"online\", \"header\", online => {\n if (online !== this.state.online) {\n this.setState({\n online\n });\n }\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n if (!this.state.online) {\n this.setState({\n online: true\n });\n }\n if (data.isNodeHealthy !== this.state.isNodeHealthy) {\n this.setState({ isNodeHealthy: data.isNodeHealthy });\n }\n if (data.isNetworkHealthy !== this.state.isNetworkHealthy) {\n this.setState({ isNetworkHealthy: data.isNetworkHealthy });\n }\n }\n });\n\n this._nodeInfoExtendedSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeInfoExtended,\n data => {\n if (data) {\n const memorySizeFormatted = FormatHelper.iSize(data.memoryUsage, 1);\n\n if (memorySizeFormatted !== this.state.memorySizeFormatted) {\n this.setState({ memorySizeFormatted });\n }\n }\n },\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n this.setState({\n memorySize: nonNull\n .map(d => d.memoryUsage)\n });\n });\n\n this._databaseSizeMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.DatabaseSizeMetric,\n data => {\n if (data) {\n let dbSizeTotalFormatted = \"-\";\n if (data.databaseSizes.length > 0) {\n dbSizeTotalFormatted = FormatHelper.size(data.databaseSizes[0].total);\n }\n\n if (dbSizeTotalFormatted !== this.state.dbSizeTotalFormatted) {\n this.setState({ dbSizeTotalFormatted });\n }\n }\n },\n allData => {\n const nonNull = allData.filter(d => d?.databaseSizes !== undefined && d?.databaseSizes !== null);\n\n const dbSizeTotalValues = nonNull\n .map(d => d.databaseSizes.map(s => s.total));\n\n const dbSizeTotalFlattened = dbSizeTotalValues.flat();\n\n this.setState({ dbSizeTotal: dbSizeTotalFlattened });\n });\n\n this._gossipMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.GossipMetrics,\n data => {\n if (data) {\n const bpsValues = this.state.bpsValues.slice(-40);\n bpsValues.push(data.new);\n\n let bpsFormatted = \"-\";\n if (bpsValues.length > 0) {\n bpsFormatted = bpsValues[bpsValues.length - 1].toString();\n }\n\n if (bpsFormatted !== this.state.bps) {\n this.setState({ bps: bpsFormatted });\n }\n this.setState({ bpsValues });\n }\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"auth-state\", \"header\");\n EventAggregator.unsubscribe(\"online\", \"header\");\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._nodeInfoExtendedSubscription) {\n this._metricsService.unsubscribe(this._nodeInfoExtendedSubscription);\n this._nodeInfoExtendedSubscription = undefined;\n }\n\n if (this._databaseSizeMetricsSubscription) {\n this._metricsService.unsubscribe(this._databaseSizeMetricsSubscription);\n this._databaseSizeMetricsSubscription = undefined;\n }\n\n if (this._gossipMetricsSubscription) {\n this._metricsService.unsubscribe(this._gossipMetricsSubscription);\n this._gossipMetricsSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n {this.state.online && (\n \n {this.props.children}\n \n \n \n \n \n \n {this.state.isLoggedIn && (\n \n \n \n \n )}\n \n \n )}\n
\n
\n );\n }\n}\n\nexport default withRouter(Header);\n","import React, { Component, ReactNode } from \"react\";\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { ThemeService } from \"../../../services/themeService\";\nimport { BrandHelper } from \"../../../utils/brandHelper\";\nimport \"./NavMenu.scss\";\nimport { NavMenuProps } from \"./NavMenuProps\";\nimport { NavMenuState } from \"./NavMenuState\";\n\n/**\n * Navigation menu.\n */\nclass NavMenu extends Component {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * Create a new instance of NavMenu;\n * @param props The props.\n */\n constructor(props: RouteComponentProps & NavMenuProps) {\n super(props);\n\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n logoSrc: \"\",\n isOpen: false\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"navmenu\", async (theme: string) => {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(theme)\n });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n EventAggregator.unsubscribe(\"theme\", \"navmenu\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n this.state.isOpen && this.setState({ isOpen: false })}\n >\n this.setState({ isOpen: !this.state.isOpen })}\n >\n \n \n {this.state.isOpen && (\n
\n {this.props.children}\n
\n )}\n
\n );\n }\n}\n\nexport default withRouter(NavMenu);\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { EventAggregator } from \"../../../services/eventAggregator\";\nimport { ThemeService } from \"../../../services/themeService\";\nimport { BrandHelper } from \"../../../utils/brandHelper\";\nimport \"./NavPanel.scss\";\nimport { NavPanelProps } from \"./NavPanelProps\";\nimport { NavPanelState } from \"./NavPanelState\";\n\n/**\n * Navigation panel.\n */\nclass NavPanel extends Component {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * Create a new instance of NavPanel;\n * @param props The props.\n */\n constructor(props: RouteComponentProps & NavPanelProps) {\n super(props);\n\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n logoSrc: \"\"\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"navpanel\", async (theme: string) => {\n this.setState({\n logoSrc: await BrandHelper.getLogoNavigation(theme)\n });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n EventAggregator.unsubscribe(\"theme\", \"navpanel\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n \n \n \n\n
\n {this.props.middle.map(b => (\n \n {!b.hidden && b.route && (\n 1 &&\n this.props.location.pathname.startsWith(b.route)) ||\n b.route === this.props.location.pathname\n }\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n {!b.hidden && b.function && (\n b.function?.()}\n className={classNames(\n \"nav-panel--button\"\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n \n ))}\n
\n\n
\n {this.props.end.map(b => (\n \n {!b.hidden && b.route && (\n 1 &&\n this.props.location.pathname.startsWith(b.route)) ||\n b.route === this.props.location.pathname\n }\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n {!b.hidden && b.function && (\n b.function?.()}\n className={classNames(\n \"nav-panel--button\"\n )}\n >\n {b.icon}\n {b.label}\n \n )}\n \n ))}\n
\n
\n );\n }\n}\n\nexport default withRouter(NavPanel);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgConfirmation = function SvgConfirmation(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6569 5.62329C7.03439 7.02356 5.63123 8 4 8C1.79086 8 0 6.20914 0 4C0 1.79086 1.79086 0 4 0C6.09134 0 7.80782 1.60496 7.98493 3.65037L12.3431 4.37673C12.9656 2.97645 14.3688 2 16 2C18.2091 2 20 3.79086 20 6C20 8.20914 18.2091 10 16 10C14.9749 10 14.04 9.61443 13.3321 8.9804L7.77815 12.6831C7.88518 12.9902 7.95583 13.3143 7.98493 13.6504L12.3431 14.3767C12.9656 12.9764 14.3688 12 16 12C18.2091 12 20 13.7909 20 16C20 18.2091 18.2091 20 16 20C13.9087 20 12.1922 18.3951 12.0151 16.3497L7.6569 15.6233C7.03439 17.0236 5.63123 18 4 18C1.79086 18 0 16.2091 0 14C0 11.7909 1.79086 10 4 10C5.02504 10 5.96002 10.3856 6.66784 11.0196L12.2218 7.3169C12.1148 7.00981 12.0442 6.68568 12.0151 6.34965L7.6569 5.62329Z\",\n fill: \"#666AF6\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgConfirmation);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/confirmation.111458925d5e48ea4edcd8448e4c034a.svg\";","var _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgDbIcon = function SvgDbIcon(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M16 10.667C22.6274 10.667 28 8.87613 28 6.66699C28 4.45785 22.6274 2.66699 16 2.66699C9.37258 2.66699 4 4.45785 4 6.66699C4 8.87613 9.37258 10.667 16 10.667Z\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M28 16C28 18.2133 22.6667 20 16 20C9.33333 20 4 18.2133 4 16\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M4 6.66699V25.3337C4 27.547 9.33333 29.3337 16 29.3337C22.6667 29.3337 28 27.547 28 25.3337V6.66699\",\n stroke: \"#61E884\",\n strokeWidth: 2.66667,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgDbIcon);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/db-icon.0d2bef5e4b057ba24d916a7d190c914b.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMemory = function SvgMemory(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M7 1C7 0.447715 7.44772 0 8 0C8.55229 0 9 0.447715 9 1V4H12V1C12 0.447715 12.4477 0 13 0C13.5523 0 14 0.447715 14 1V4H17V1C17 0.447715 17.4477 0 18 0C18.5523 0 19 0.447715 19 1V4.12602C20.4056 4.4878 21.5122 5.59439 21.874 7H25C25.5523 7 26 7.44772 26 8C26 8.55229 25.5523 9 25 9H22V12H25C25.5523 12 26 12.4477 26 13C26 13.5523 25.5523 14 25 14H22V17H25C25.5523 17 26 17.4477 26 18C26 18.5523 25.5523 19 25 19H21.874C21.5122 20.4056 20.4056 21.5122 19 21.874V25C19 25.5523 18.5523 26 18 26C17.4477 26 17 25.5523 17 25V22H14V25C14 25.5523 13.5523 26 13 26C12.4477 26 12 25.5523 12 25V22H9V25C9 25.5523 8.55229 26 8 26C7.44772 26 7 25.5523 7 25V21.874C5.59439 21.5122 4.4878 20.4056 4.12602 19H1C0.447715 19 0 18.5523 0 18C0 17.4477 0.447715 17 1 17H4V14H1C0.447715 14 0 13.5523 0 13C0 12.4477 0.447715 12 1 12H4V9H1C0.447715 9 0 8.55229 0 8C0 7.44772 0.447715 7 1 7H4.12602C4.4878 5.59439 5.59439 4.4878 7 4.12602V1ZM11 9C9.89543 9 9 9.89543 9 11V15C9 16.1046 9.89543 17 11 17H15C16.1046 17 17 16.1046 17 15V11C17 9.89543 16.1046 9 15 9H11Z\",\n fill: \"#666AF6\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMemory);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/memory.85492509c678bfd1d551db28872ea914.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgMilestone = function SvgMilestone(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 22,\n height: 26,\n viewBox: \"0 0 22 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M1.5 0C0.671573 0 0 0.671572 0 1.5V24.5C0 25.3284 0.671573 26 1.5 26C2.32843 26 3 25.3284 3 24.5V17H19C20.6569 17 22 15.6569 22 14V5C22 3.34315 20.6569 2 19 2H3V1.5C3 0.671573 2.32843 0 1.5 0Z\",\n fill: \"#16E1D5\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgMilestone);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/milestone.cc04134a7d188f0909d9f23c87a360b2.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPruning = function SvgPruning(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 25,\n viewBox: \"0 0 24 25\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.9999 12.8115L9.67454 15.5795C10.3612 16.5407 10.7088 17.703 10.6624 18.8833C10.6161 20.0637 10.1785 21.1951 9.41854 22.0995C8.50834 23.1815 7.20609 23.8582 5.79753 23.9812C4.38897 24.1042 2.98915 23.6634 1.90521 22.7555C1.36875 22.3064 0.926138 21.7558 0.602702 21.1354C0.279265 20.515 0.0813554 19.8368 0.0202999 19.1398C-0.0407557 18.4428 0.0362414 17.7406 0.246884 17.0734C0.457528 16.4062 0.797681 15.7871 1.24788 15.2515C2.0087 14.3467 3.04825 13.72 4.20357 13.4695C5.35889 13.219 6.56467 13.359 7.63188 13.8675L10.2585 10.7395L3.07454 2.18885C2.96202 2.05495 2.87699 1.90019 2.82433 1.7334C2.77166 1.56662 2.7524 1.39109 2.76763 1.21685C2.78286 1.04261 2.83229 0.873089 2.9131 0.717973C2.9939 0.562856 3.10449 0.42519 3.23854 0.31285C3.37266 0.200246 3.52764 0.115165 3.69464 0.0624652C3.86165 0.0097655 4.03739 -0.00952042 4.21185 0.00570882C4.3863 0.0209381 4.55605 0.0703841 4.71139 0.151223C4.86674 0.232062 5.00463 0.342711 5.11721 0.47685L11.9999 8.66885L18.8812 0.47685C18.9938 0.342517 19.1318 0.231703 19.2872 0.150745C19.4427 0.0697879 19.6126 0.0202768 19.7872 0.00504451C19.9618 -0.0101878 20.1377 0.00915768 20.3049 0.0619742C20.472 0.114791 20.6271 0.200042 20.7612 0.31285C20.8953 0.42519 21.0059 0.562856 21.0867 0.717973C21.1675 0.873089 21.2169 1.04261 21.2321 1.21685C21.2474 1.39109 21.2281 1.56662 21.1754 1.7334C21.1228 1.90019 21.0377 2.05495 20.9252 2.18885L13.7399 10.7395L16.3665 13.8662C17.4338 13.3577 18.6395 13.2177 19.7948 13.4682C20.9502 13.7186 21.9897 14.3454 22.7505 15.2502C23.2007 15.7858 23.5409 16.4049 23.7515 17.0721C23.9622 17.7393 24.0392 18.4415 23.9781 19.1385C23.9171 19.8355 23.7192 20.5136 23.3957 21.134C23.0723 21.7545 22.6297 22.305 22.0932 22.7542C21.0093 23.6621 19.6094 24.1029 18.2009 23.9799C16.7923 23.8569 15.4901 23.1802 14.5799 22.0982C13.8199 21.1938 13.3823 20.0624 13.336 18.882C13.2896 17.7016 13.6372 16.5394 14.3239 15.5782L11.9999 12.8115ZM3.61988 20.7142C4.16456 21.1353 4.85102 21.3295 5.53559 21.256C6.22017 21.1825 6.84979 20.8471 7.29269 20.32C7.73559 19.7928 7.95744 19.1148 7.91181 18.4278C7.86618 17.7408 7.55661 17.0981 7.04788 16.6342C6.50587 16.18 5.80581 15.9595 5.10137 16.021C4.39692 16.0825 3.74566 16.421 3.29054 16.9622C2.34388 18.0889 2.49054 19.7689 3.61988 20.7142ZM20.3799 20.7142C20.648 20.4895 20.8692 20.2142 21.0308 19.9039C21.1924 19.5937 21.2912 19.2547 21.3217 18.9062C21.3522 18.5577 21.3136 18.2066 21.2083 17.8731C21.103 17.5395 20.9329 17.23 20.7079 16.9622C20.2528 16.4214 19.6018 16.0832 18.8977 16.0217C18.1936 15.9602 17.4938 16.1805 16.9519 16.6342C16.6837 16.8588 16.4624 17.134 16.3007 17.4442C16.1389 17.7544 16.0399 18.0934 16.0093 18.4419C15.9788 18.7904 16.0172 19.1415 16.1224 19.4751C16.2276 19.8087 16.3976 20.1183 16.6225 20.3862C17.5692 21.5129 19.2519 21.6595 20.3799 20.7142Z\",\n fill: \"#FF8B5C\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPruning);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/pruning.eef4ee1560b2a068145ffad5bbbf6250.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgUptime = function SvgUptime(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 26,\n height: 26,\n viewBox: \"0 0 26 26\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M13 26C20.1797 26 26 20.1797 26 13C26 5.8203 20.1797 0 13 0C5.8203 0 0 5.8203 0 13C0 20.1797 5.8203 26 13 26ZM12 5C12 4.44772 12.4477 4 13 4C13.5523 4 14 4.44772 14 5V12H19C19.5523 12 20 12.4477 20 13C20 13.5523 19.5523 14 19 14H13C12.4477 14 12 13.5523 12 13V5Z\",\n fill: \"#4CAAFF\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgUptime);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/uptime.a9b43f0965de14ce059205f56a3eb6da.svg\";","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/* eslint-disable array-bracket-newline */\r\n/**\r\n * Class to help with Bech32 encoding/decoding.\r\n * Based on reference implementation https://github.com/sipa/bech32/blob/master/ref/javascript/bech32.js.\r\n */\r\nexport class Bech32 {\r\n /**\r\n * Encode the buffer.\r\n * @param humanReadablePart The header.\r\n * @param data The data to encode.\r\n * @returns The encoded data.\r\n */\r\n static encode(humanReadablePart, data) {\r\n return Bech32.encode5BitArray(humanReadablePart, Bech32.to5Bit(data));\r\n }\r\n /**\r\n * Encode the 5 bit data buffer.\r\n * @param humanReadablePart The header.\r\n * @param data5Bit The data to encode.\r\n * @returns The encoded data.\r\n */\r\n static encode5BitArray(humanReadablePart, data5Bit) {\r\n const checksum = Bech32.createChecksum(humanReadablePart, data5Bit);\r\n let ret = `${humanReadablePart}${Bech32.SEPARATOR}`;\r\n for (let i = 0; i < data5Bit.length; i++) {\r\n ret += Bech32.CHARSET.charAt(data5Bit[i]);\r\n }\r\n for (let i = 0; i < checksum.length; i++) {\r\n ret += Bech32.CHARSET.charAt(checksum[i]);\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Decode a bech32 string.\r\n * @param bech The text to decode.\r\n * @returns The decoded data or undefined if it could not be decoded.\r\n */\r\n static decode(bech) {\r\n const result = Bech32.decodeTo5BitArray(bech);\r\n return result\r\n ? {\r\n humanReadablePart: result.humanReadablePart,\r\n data: Bech32.from5Bit(result.data)\r\n }\r\n : undefined;\r\n }\r\n /**\r\n * Decode a bech32 string to 5 bit array.\r\n * @param bech The text to decode.\r\n * @returns The decoded data or undefined if it could not be decoded.\r\n */\r\n static decodeTo5BitArray(bech) {\r\n bech = bech.toLowerCase();\r\n const separatorPos = bech.lastIndexOf(Bech32.SEPARATOR);\r\n if (separatorPos === -1) {\r\n throw new Error(`There is no separator character ${Bech32.SEPARATOR} in the data`);\r\n }\r\n if (separatorPos < 1) {\r\n throw new Error(`The separator position is ${separatorPos}, which is too early in the string`);\r\n }\r\n if (separatorPos + 7 > bech.length) {\r\n throw new Error(`The separator position is ${separatorPos}, which doesn't leave enough space for data`);\r\n }\r\n const data = new Uint8Array(bech.length - separatorPos - 1);\r\n let idx = 0;\r\n for (let i = separatorPos + 1; i < bech.length; i++) {\r\n const d = Bech32.CHARSET.indexOf(bech.charAt(i));\r\n if (d === -1) {\r\n throw new Error(`Data contains characters not in the charset ${bech.charAt(i)}`);\r\n }\r\n data[idx++] = Bech32.CHARSET.indexOf(bech.charAt(i));\r\n }\r\n const humanReadablePart = bech.slice(0, separatorPos);\r\n if (!Bech32.verifyChecksum(humanReadablePart, data)) {\r\n return;\r\n }\r\n return { humanReadablePart, data: data.slice(0, -6) };\r\n }\r\n /**\r\n * Convert the input bytes into 5 bit data.\r\n * @param bytes The bytes to convert.\r\n * @returns The data in 5 bit form.\r\n */\r\n static to5Bit(bytes) {\r\n return Bech32.convertBits(bytes, 8, 5, true);\r\n }\r\n /**\r\n * Convert the 5 bit data to 8 bit.\r\n * @param fiveBit The 5 bit data to convert.\r\n * @returns The 5 bit data converted to 8 bit.\r\n */\r\n static from5Bit(fiveBit) {\r\n return Bech32.convertBits(fiveBit, 5, 8, false);\r\n }\r\n /**\r\n * Does the given string match the bech32 pattern.\r\n * @param humanReadablePart The human readable part.\r\n * @param bech32Text The text to test.\r\n * @returns True if this is potentially a match.\r\n */\r\n static matches(humanReadablePart, bech32Text) {\r\n if (!bech32Text) {\r\n return false;\r\n }\r\n const regEx = new RegExp(`^${humanReadablePart}1[${Bech32.CHARSET}]{6,}$`);\r\n return regEx.test(bech32Text);\r\n }\r\n /**\r\n * Create the checksum from the human redable part and the data.\r\n * @param humanReadablePart The human readable part.\r\n * @param data The data.\r\n * @returns The checksum.\r\n * @internal\r\n */\r\n static createChecksum(humanReadablePart, data) {\r\n const expanded = Bech32.humanReadablePartExpand(humanReadablePart);\r\n const values = new Uint8Array(expanded.length + data.length + 6);\r\n values.set(expanded, 0);\r\n values.set(data, expanded.length);\r\n values.set([0, 0, 0, 0, 0, 0], expanded.length + data.length);\r\n const mod = Bech32.polymod(values) ^ 1;\r\n const ret = new Uint8Array(6);\r\n for (let i = 0; i < 6; i++) {\r\n ret[i] = (mod >> (5 * (5 - i))) & 31;\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Verify the checksum given the humarn readable part and data.\r\n * @param humanReadablePart The human redable part to validate the checksum.\r\n * @param data The data to validate the checksum.\r\n * @returns True if the checksum was verified.\r\n * @internal\r\n */\r\n static verifyChecksum(humanReadablePart, data) {\r\n const expanded = Bech32.humanReadablePartExpand(humanReadablePart);\r\n const values = new Uint8Array(expanded.length + data.length);\r\n values.set(expanded, 0);\r\n values.set(data, expanded.length);\r\n return Bech32.polymod(values) === 1;\r\n }\r\n /**\r\n * Calculate the polymod of the values.\r\n * @param values The values to calculate the polymod for.\r\n * @returns The polymod of the values.\r\n * @internal\r\n */\r\n static polymod(values) {\r\n let chk = 1;\r\n for (let p = 0; p < values.length; p++) {\r\n const top = chk >> 25;\r\n chk = ((chk & 0x1ffffff) << 5) ^ values[p];\r\n for (let i = 0; i < 5; ++i) {\r\n if ((top >> i) & 1) {\r\n chk ^= Bech32.GENERATOR[i];\r\n }\r\n }\r\n }\r\n return chk;\r\n }\r\n /**\r\n * Expand the human readable part.\r\n * @param humanReadablePart The human readable part to expand.\r\n * @returns The expanded human readable part.\r\n * @internal\r\n */\r\n static humanReadablePartExpand(humanReadablePart) {\r\n const ret = new Uint8Array(humanReadablePart.length * 2 + 1);\r\n let idx = 0;\r\n for (let i = 0; i < humanReadablePart.length; i++) {\r\n ret[idx++] = humanReadablePart.charCodeAt(i) >> 5;\r\n }\r\n ret[idx++] = 0;\r\n for (let i = 0; i < humanReadablePart.length; i++) {\r\n ret[idx++] = humanReadablePart.charCodeAt(i) & 31;\r\n }\r\n return ret;\r\n }\r\n /**\r\n * Convert input data from one bit resolution to another.\r\n * @param data The data to convert.\r\n * @param fromBits The resolution of the input data.\r\n * @param toBits The required resolution of the output data.\r\n * @param padding Include padding in the output.\r\n * @returns The converted data,\r\n * @internal\r\n */\r\n static convertBits(data, fromBits, toBits, padding) {\r\n let value = 0;\r\n let bits = 0;\r\n const maxV = (1 << toBits) - 1;\r\n const res = [];\r\n for (let i = 0; i < data.length; i++) {\r\n value = (value << fromBits) | data[i];\r\n bits += fromBits;\r\n while (bits >= toBits) {\r\n bits -= toBits;\r\n res.push((value >> bits) & maxV);\r\n }\r\n }\r\n if (padding) {\r\n if (bits > 0) {\r\n res.push((value << (toBits - bits)) & maxV);\r\n }\r\n }\r\n else {\r\n if (bits >= fromBits) {\r\n throw new Error(\"Excess padding\");\r\n }\r\n if ((value << (toBits - bits)) & maxV) {\r\n throw new Error(\"Non-zero padding\");\r\n }\r\n }\r\n return new Uint8Array(res);\r\n }\r\n}\r\n/**\r\n * The alphabet to use.\r\n * @internal\r\n */\r\nBech32.CHARSET = \"qpzry9x8gf2tvdw0s3jn54khce6mua7l\";\r\n/**\r\n * The separator between human readable part and data.\r\n * @internal\r\n */\r\nBech32.SEPARATOR = \"1\";\r\n/**\r\n * The generator constants;\r\n * @internal\r\n */\r\nBech32.GENERATOR = Uint32Array.from([\r\n 0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3\r\n]);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/**\r\n * Class to help with Blake2B Signature scheme.\r\n * TypeScript conversion from https://github.com/dcposch/blakejs.\r\n */\r\nexport class Blake2b {\r\n /**\r\n * Create a new instance of Blake2b.\r\n * @param outlen Output length between 1 and 64 bytes.\r\n * @param key Optional key.\r\n */\r\n constructor(outlen, key) {\r\n this._v = new Uint32Array(32);\r\n this._m = new Uint32Array(32);\r\n this._context = {\r\n b: new Uint8Array(128),\r\n h: new Uint32Array(16),\r\n t: 0,\r\n c: 0,\r\n outlen // output length in bytes\r\n };\r\n this.init(outlen, key);\r\n }\r\n /**\r\n * Perform Sum 256 on the data.\r\n * @param data The data to operate on.\r\n * @param key Optional key for the hash.\r\n * @returns The sum 256 of the data.\r\n */\r\n static sum256(data, key) {\r\n const b2b = new Blake2b(Blake2b.SIZE_256, key);\r\n b2b.update(data);\r\n return b2b.final();\r\n }\r\n /**\r\n * Perform Sum 512 on the data.\r\n * @param data The data to operate on.\r\n * @param key Optional key for the hash.\r\n * @returns The sum 512 of the data.\r\n */\r\n static sum512(data, key) {\r\n const b2b = new Blake2b(Blake2b.SIZE_512, key);\r\n b2b.update(data);\r\n return b2b.final();\r\n }\r\n /**\r\n * Updates a BLAKE2b streaming hash.\r\n * @param input The data to hash.\r\n */\r\n update(input) {\r\n for (let i = 0; i < input.length; i++) {\r\n if (this._context.c === 128) {\r\n // buffer full ?\r\n this._context.t += this._context.c; // add counters\r\n this.compress(false); // compress (not last)\r\n this._context.c = 0; // counter to zero\r\n }\r\n this._context.b[this._context.c++] = input[i];\r\n }\r\n }\r\n /**\r\n * Completes a BLAKE2b streaming hash.\r\n * @returns The final data.\r\n */\r\n final() {\r\n this._context.t += this._context.c; // mark last block offset\r\n while (this._context.c < 128) {\r\n // fill up with zeros\r\n this._context.b[this._context.c++] = 0;\r\n }\r\n this.compress(true); // final block flag = 1\r\n // little endian convert and store\r\n const out = new Uint8Array(this._context.outlen);\r\n for (let i = 0; i < this._context.outlen; i++) {\r\n out[i] = this._context.h[i >> 2] >> (8 * (i & 3));\r\n }\r\n return out;\r\n }\r\n /**\r\n * Creates a BLAKE2b hashing context.\r\n * @param outlen Output length between 1 and 64 bytes.\r\n * @param key Optional key.\r\n * @returns The initialized context.\r\n * @internal\r\n */\r\n init(outlen, key) {\r\n if (outlen <= 0 || outlen > 64) {\r\n throw new Error(\"Illegal output length, expected 0 < length <= 64\");\r\n }\r\n if (key && key.length > 64) {\r\n throw new Error(\"Illegal key, expected Uint8Array with 0 < length <= 64\");\r\n }\r\n // initialize hash state\r\n for (let i = 0; i < 16; i++) {\r\n this._context.h[i] = Blake2b.BLAKE2B_IV32[i];\r\n }\r\n const keylen = key ? key.length : 0;\r\n this._context.h[0] ^= 0x01010000 ^ (keylen << 8) ^ outlen;\r\n // key the hash, if applicable\r\n if (key) {\r\n this.update(key);\r\n // at the end\r\n this._context.c = 128;\r\n }\r\n }\r\n /**\r\n * Compression.\r\n * Note we're representing 16 uint64s as 32 uint32s\r\n * @param last Is this the last block.\r\n * @internal\r\n */\r\n compress(last) {\r\n let i = 0;\r\n // init work variables\r\n for (i = 0; i < 16; i++) {\r\n this._v[i] = this._context.h[i];\r\n this._v[i + 16] = Blake2b.BLAKE2B_IV32[i];\r\n }\r\n // low 64 bits of offset\r\n this._v[24] ^= this._context.t;\r\n this._v[25] ^= this._context.t / 0x100000000;\r\n // high 64 bits not supported, offset may not be higher than 2**53-1\r\n // last block flag set ?\r\n if (last) {\r\n this._v[28] = ~this._v[28];\r\n this._v[29] = ~this._v[29];\r\n }\r\n // get little-endian words\r\n for (i = 0; i < 32; i++) {\r\n this._m[i] = this.b2bGet32(this._context.b, 4 * i);\r\n }\r\n // twelve rounds of mixing\r\n for (i = 0; i < 12; i++) {\r\n this.b2bG(0, 8, 16, 24, Blake2b.SIGMA82[i * 16 + 0], Blake2b.SIGMA82[i * 16 + 1]);\r\n this.b2bG(2, 10, 18, 26, Blake2b.SIGMA82[i * 16 + 2], Blake2b.SIGMA82[i * 16 + 3]);\r\n this.b2bG(4, 12, 20, 28, Blake2b.SIGMA82[i * 16 + 4], Blake2b.SIGMA82[i * 16 + 5]);\r\n this.b2bG(6, 14, 22, 30, Blake2b.SIGMA82[i * 16 + 6], Blake2b.SIGMA82[i * 16 + 7]);\r\n this.b2bG(0, 10, 20, 30, Blake2b.SIGMA82[i * 16 + 8], Blake2b.SIGMA82[i * 16 + 9]);\r\n this.b2bG(2, 12, 22, 24, Blake2b.SIGMA82[i * 16 + 10], Blake2b.SIGMA82[i * 16 + 11]);\r\n this.b2bG(4, 14, 16, 26, Blake2b.SIGMA82[i * 16 + 12], Blake2b.SIGMA82[i * 16 + 13]);\r\n this.b2bG(6, 8, 18, 28, Blake2b.SIGMA82[i * 16 + 14], Blake2b.SIGMA82[i * 16 + 15]);\r\n }\r\n for (i = 0; i < 16; i++) {\r\n this._context.h[i] = this._context.h[i] ^ this._v[i] ^ this._v[i + 16];\r\n }\r\n }\r\n /**\r\n * 64-bit unsigned addition\r\n * Sets v[a,a+1] += v[b,b+1]\r\n * @param v The array.\r\n * @param a The a index.\r\n * @param b The b index.\r\n * @internal\r\n */\r\n add64AA(v, a, b) {\r\n const o0 = v[a] + v[b];\r\n let o1 = v[a + 1] + v[b + 1];\r\n if (o0 >= 0x100000000) {\r\n o1++;\r\n }\r\n v[a] = o0;\r\n v[a + 1] = o1;\r\n }\r\n /**\r\n * 64-bit unsigned addition.\r\n * Sets v[a,a+1] += b.\r\n * @param v The array of data to work on.\r\n * @param a The index to use.\r\n * @param b0 Is the low 32 bits.\r\n * @param b1 Represents the high 32 bits.\r\n * @internal\r\n */\r\n add64AC(v, a, b0, b1) {\r\n let o0 = v[a] + b0;\r\n if (b0 < 0) {\r\n o0 += 0x100000000;\r\n }\r\n let o1 = v[a + 1] + b1;\r\n if (o0 >= 0x100000000) {\r\n o1++;\r\n }\r\n v[a] = o0;\r\n v[a + 1] = o1;\r\n }\r\n /**\r\n * Little endian read byte 32;\r\n * @param arr The array to read from .\r\n * @param i The index to start reading from.\r\n * @returns The value.\r\n * @internal\r\n */\r\n b2bGet32(arr, i) {\r\n return arr[i] ^ (arr[i + 1] << 8) ^ (arr[i + 2] << 16) ^ (arr[i + 3] << 24);\r\n }\r\n /**\r\n * G Mixing function.\r\n * The ROTRs are inlined for speed.\r\n * @param a The a value.\r\n * @param b The b value.\r\n * @param c The c value.\r\n * @param d The d value.\r\n * @param ix The ix value.\r\n * @param iy The iy value.\r\n * @internal\r\n */\r\n b2bG(a, b, c, d, ix, iy) {\r\n const x0 = this._m[ix];\r\n const x1 = this._m[ix + 1];\r\n const y0 = this._m[iy];\r\n const y1 = this._m[iy + 1];\r\n this.add64AA(this._v, a, b); // v[a,a+1] += v[b,b+1] ... in JS we must store a uint64 as two uint32s\r\n this.add64AC(this._v, a, x0, x1); // v[a, a+1] += x ... x0 is the low 32 bits of x, x1 is the high 32 bits\r\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated to the right by 32 bits\r\n let xor0 = this._v[d] ^ this._v[a];\r\n let xor1 = this._v[d + 1] ^ this._v[a + 1];\r\n this._v[d] = xor1;\r\n this._v[d + 1] = xor0;\r\n this.add64AA(this._v, c, d);\r\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 24 bits\r\n xor0 = this._v[b] ^ this._v[c];\r\n xor1 = this._v[b + 1] ^ this._v[c + 1];\r\n this._v[b] = (xor0 >>> 24) ^ (xor1 << 8);\r\n this._v[b + 1] = (xor1 >>> 24) ^ (xor0 << 8);\r\n this.add64AA(this._v, a, b);\r\n this.add64AC(this._v, a, y0, y1);\r\n // v[d,d+1] = (v[d,d+1] xor v[a,a+1]) rotated right by 16 bits\r\n xor0 = this._v[d] ^ this._v[a];\r\n xor1 = this._v[d + 1] ^ this._v[a + 1];\r\n this._v[d] = (xor0 >>> 16) ^ (xor1 << 16);\r\n this._v[d + 1] = (xor1 >>> 16) ^ (xor0 << 16);\r\n this.add64AA(this._v, c, d);\r\n // v[b,b+1] = (v[b,b+1] xor v[c,c+1]) rotated right by 63 bits\r\n xor0 = this._v[b] ^ this._v[c];\r\n xor1 = this._v[b + 1] ^ this._v[c + 1];\r\n this._v[b] = (xor1 >>> 31) ^ (xor0 << 1);\r\n this._v[b + 1] = (xor0 >>> 31) ^ (xor1 << 1);\r\n }\r\n}\r\n/**\r\n * Blake2b 256.\r\n */\r\nBlake2b.SIZE_256 = 32;\r\n/**\r\n * Blake2b 512.\r\n */\r\nBlake2b.SIZE_512 = 64;\r\n/**\r\n * Initialization Vector.\r\n * @internal\r\n */\r\nBlake2b.BLAKE2B_IV32 = new Uint32Array([\r\n 0xf3bcc908, 0x6a09e667, 0x84caa73b, 0xbb67ae85, 0xfe94f82b, 0x3c6ef372, 0x5f1d36f1, 0xa54ff53a, 0xade682d1,\r\n 0x510e527f, 0x2b3e6c1f, 0x9b05688c, 0xfb41bd6b, 0x1f83d9ab, 0x137e2179, 0x5be0cd19\r\n]);\r\n/**\r\n * Initialization Vector.\r\n * @internal\r\n */\r\nBlake2b.SIGMA8 = [\r\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3, 11,\r\n 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4, 7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8, 9, 0, 5,\r\n 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13, 2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9, 12, 5, 1, 15,\r\n 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11, 13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10, 6, 15, 14, 9, 11,\r\n 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5, 10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0, 0, 1, 2, 3, 4, 5, 6,\r\n 7, 8, 9, 10, 11, 12, 13, 14, 15, 14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3\r\n];\r\n/**\r\n * These are offsets into a uint64 buffer.\r\n * Multiply them all by 2 to make them offsets into a uint32 buffer,\r\n * because this is Javascript and we don't have uint64s\r\n * @internal\r\n */\r\nBlake2b.SIGMA82 = new Uint8Array(Blake2b.SIGMA8.map(x => x * 2));\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to implement Curl sponge.\r\n */\r\nexport class Curl {\r\n /**\r\n * Create a new instance of Curl.\r\n * @param rounds The number of rounds to perform.\r\n */\r\n constructor(rounds = Curl.NUMBER_OF_ROUNDS) {\r\n if (rounds !== 27 && rounds !== 81) {\r\n throw new Error(\"Illegal number of rounds. Only `27` and `81` rounds are supported.\");\r\n }\r\n this._state = new Int8Array(Curl.STATE_LENGTH);\r\n this._rounds = rounds;\r\n }\r\n /**\r\n * Sponge transform function.\r\n * @param curlState The curl state to transform.\r\n * @param rounds The number of rounds to use.\r\n */\r\n static transform(curlState, rounds) {\r\n let stateCopy;\r\n let index = 0;\r\n for (let round = 0; round < rounds; round++) {\r\n stateCopy = curlState.slice();\r\n for (let i = 0; i < Curl.STATE_LENGTH; i++) {\r\n const lastVal = stateCopy[index];\r\n if (index < 365) {\r\n index += 364;\r\n }\r\n else {\r\n index -= 365;\r\n }\r\n const nextVal = stateCopy[index] << 2;\r\n curlState[i] = Curl.TRUTH_TABLE[lastVal + nextVal + 5];\r\n }\r\n }\r\n }\r\n /**\r\n * Resets the state.\r\n */\r\n reset() {\r\n this._state = new Int8Array(Curl.STATE_LENGTH);\r\n }\r\n /**\r\n * Get the state of the sponge.\r\n * @param len The length of the state to get.\r\n * @returns The state.\r\n */\r\n rate(len = Curl.HASH_LENGTH) {\r\n return this._state.slice(0, len);\r\n }\r\n /**\r\n * Absorbs trits given an offset and length.\r\n * @param trits The trits to absorb.\r\n * @param offset The offset to start abororbing from the array.\r\n * @param length The length of trits to absorb.\r\n */\r\n absorb(trits, offset, length) {\r\n do {\r\n const limit = length < Curl.HASH_LENGTH ? length : Curl.HASH_LENGTH;\r\n this._state.set(trits.subarray(offset, offset + limit));\r\n Curl.transform(this._state, this._rounds);\r\n length -= Curl.HASH_LENGTH;\r\n offset += limit;\r\n } while (length > 0);\r\n }\r\n /**\r\n * Squeezes trits given an offset and length.\r\n * @param trits The trits to squeeze.\r\n * @param offset The offset to start squeezing from the array.\r\n * @param length The length of trits to squeeze.\r\n */\r\n squeeze(trits, offset, length) {\r\n do {\r\n const limit = length < Curl.HASH_LENGTH ? length : Curl.HASH_LENGTH;\r\n trits.set(this._state.subarray(0, limit), offset);\r\n Curl.transform(this._state, this._rounds);\r\n length -= Curl.HASH_LENGTH;\r\n offset += limit;\r\n } while (length > 0);\r\n }\r\n}\r\n/**\r\n * The Hash Length.\r\n */\r\nCurl.HASH_LENGTH = 243;\r\n/**\r\n * The State Length.\r\n */\r\nCurl.STATE_LENGTH = 3 * Curl.HASH_LENGTH;\r\n/**\r\n * The default number of rounds.\r\n * @internal\r\n */\r\nCurl.NUMBER_OF_ROUNDS = 81;\r\n/**\r\n * Truth Table.\r\n * @internal\r\n */\r\nCurl.TRUTH_TABLE = [1, 0, -1, 2, 1, -1, 0, 2, -1, 1, 0];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to help with Sha1 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha1.\r\n * Although this algorithm should not be use in most cases, it is the\r\n * default and most widely support for generating TOTP/HOTP codes.\r\n */\r\nexport class Sha1 {\r\n /**\r\n * Create a new instance of Sha1.\r\n */\r\n constructor() {\r\n /**\r\n * Blocks.\r\n * @internal\r\n */\r\n this.blocks = [];\r\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n this.h0 = 0x67452301;\r\n this.h1 = 0xefcdab89;\r\n this.h2 = 0x98badcfe;\r\n this.h3 = 0x10325476;\r\n this.h4 = 0xc3d2e1f0;\r\n this.block = 0;\r\n this.start = 0;\r\n this.bytes = 0;\r\n this.hBytes = 0;\r\n this.lastByteIndex = 0;\r\n this.finalized = false;\r\n this.hashed = false;\r\n this.first = true;\r\n }\r\n /**\r\n * Perform Sum on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum of the data.\r\n */\r\n static sum(data) {\r\n const b2b = new Sha1();\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n * @throws Error if the hash has already been finalized.\r\n */\r\n update(message) {\r\n if (this.finalized) {\r\n throw new Error(\"The hash has already been finalized.\");\r\n }\r\n let index = 0;\r\n let i;\r\n const length = message.length;\r\n const blocks = this.blocks;\r\n while (index < length) {\r\n if (this.hashed) {\r\n this.hashed = false;\r\n blocks[0] = this.block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n for (i = this.start; index < length && i < 64; ++index) {\r\n blocks[i >> 2] |= message[index] << Sha1._SHIFT[i++ & 3];\r\n }\r\n this.lastByteIndex = i;\r\n this.bytes += i - this.start;\r\n if (i >= 64) {\r\n this.block = blocks[16];\r\n this.start = i - 64;\r\n this.hash();\r\n this.hashed = true;\r\n }\r\n else {\r\n this.start = i;\r\n }\r\n }\r\n if (this.bytes > 4294967295) {\r\n this.hBytes += Math.trunc(this.bytes / 4294967296);\r\n this.bytes %= 4294967296;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n this.finalize();\r\n const h0 = this.h0;\r\n const h1 = this.h1;\r\n const h2 = this.h2;\r\n const h3 = this.h3;\r\n const h4 = this.h4;\r\n return Uint8Array.from([\r\n (h0 >> 24) & 0xff,\r\n (h0 >> 16) & 0xff,\r\n (h0 >> 8) & 0xff,\r\n h0 & 0xff,\r\n (h1 >> 24) & 0xff,\r\n (h1 >> 16) & 0xff,\r\n (h1 >> 8) & 0xff,\r\n h1 & 0xff,\r\n (h2 >> 24) & 0xff,\r\n (h2 >> 16) & 0xff,\r\n (h2 >> 8) & 0xff,\r\n h2 & 0xff,\r\n (h3 >> 24) & 0xff,\r\n (h3 >> 16) & 0xff,\r\n (h3 >> 8) & 0xff,\r\n h3 & 0xff,\r\n (h4 >> 24) & 0xff,\r\n (h4 >> 16) & 0xff,\r\n (h4 >> 8) & 0xff,\r\n h4 & 0xff\r\n ]);\r\n }\r\n /**\r\n * Finalize the hash.\r\n * @internal\r\n */\r\n finalize() {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n const blocks = this.blocks;\r\n const i = this.lastByteIndex;\r\n blocks[16] = this.block;\r\n blocks[i >> 2] |= Sha1._EXTRA[i & 3];\r\n this.block = blocks[16];\r\n if (i >= 56) {\r\n if (!this.hashed) {\r\n this.hash();\r\n }\r\n blocks[0] = this.block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n blocks[14] = (this.hBytes << 3) | (this.bytes >>> 29);\r\n blocks[15] = this.bytes << 3;\r\n this.hash();\r\n }\r\n /**\r\n * Perform the hash.\r\n * @internal\r\n */\r\n hash() {\r\n let a = this.h0;\r\n let b = this.h1;\r\n let c = this.h2;\r\n let d = this.h3;\r\n let e = this.h4;\r\n let f;\r\n let j;\r\n let t;\r\n const blocks = this.blocks;\r\n for (j = 16; j < 80; ++j) {\r\n t = blocks[j - 3] ^ blocks[j - 8] ^ blocks[j - 14] ^ blocks[j - 16];\r\n blocks[j] = (t << 1) | (t >>> 31);\r\n }\r\n for (j = 0; j < 20; j += 5) {\r\n f = (b & c) | (~b & d);\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e + 1518500249 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = (a & b) | (~a & c);\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d + 1518500249 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = (e & a) | (~e & b);\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c + 1518500249 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = (d & e) | (~d & a);\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b + 1518500249 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = (c & d) | (~c & e);\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a + 1518500249 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n for (; j < 40; j += 5) {\r\n f = b ^ c ^ d;\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e + 1859775393 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = a ^ b ^ c;\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d + 1859775393 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = e ^ a ^ b;\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c + 1859775393 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = d ^ e ^ a;\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b + 1859775393 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = c ^ d ^ e;\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a + 1859775393 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n for (; j < 60; j += 5) {\r\n f = (b & c) | (b & d) | (c & d);\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e - 1894007588 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = (a & b) | (a & c) | (b & c);\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d - 1894007588 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = (e & a) | (e & b) | (a & b);\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c - 1894007588 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = (d & e) | (d & a) | (e & a);\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b - 1894007588 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = (c & d) | (c & e) | (d & e);\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a - 1894007588 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n for (; j < 80; j += 5) {\r\n f = b ^ c ^ d;\r\n t = (a << 5) | (a >>> 27);\r\n e = Math.trunc(t + f + e - 899497514 + blocks[j]);\r\n b = (b << 30) | (b >>> 2);\r\n f = a ^ b ^ c;\r\n t = (e << 5) | (e >>> 27);\r\n d = Math.trunc(t + f + d - 899497514 + blocks[j + 1]);\r\n a = (a << 30) | (a >>> 2);\r\n f = e ^ a ^ b;\r\n t = (d << 5) | (d >>> 27);\r\n c = Math.trunc(t + f + c - 899497514 + blocks[j + 2]);\r\n e = (e << 30) | (e >>> 2);\r\n f = d ^ e ^ a;\r\n t = (c << 5) | (c >>> 27);\r\n b = Math.trunc(t + f + b - 899497514 + blocks[j + 3]);\r\n d = (d << 30) | (d >>> 2);\r\n f = c ^ d ^ e;\r\n t = (b << 5) | (b >>> 27);\r\n a = Math.trunc(t + f + a - 899497514 + blocks[j + 4]);\r\n c = (c << 30) | (c >>> 2);\r\n }\r\n this.h0 = Math.trunc(this.h0 + a);\r\n this.h1 = Math.trunc(this.h1 + b);\r\n this.h2 = Math.trunc(this.h2 + c);\r\n this.h3 = Math.trunc(this.h3 + d);\r\n this.h4 = Math.trunc(this.h4 + e);\r\n }\r\n}\r\n/**\r\n * Extra constants.\r\n * @internal\r\n */\r\nSha1._EXTRA = [-2147483648, 8388608, 32768, 128];\r\n/**\r\n * Shift constants.\r\n * @internal\r\n */\r\nSha1._SHIFT = [24, 16, 8, 0];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable unicorn/prefer-math-trunc */\r\n/**\r\n * Class to help with Sha256 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha256.\r\n */\r\nexport class Sha256 {\r\n /**\r\n * Create a new instance of Sha256.\r\n * @param bits The number of bits.\r\n */\r\n constructor(bits = Sha256.SIZE_256) {\r\n /**\r\n * Blocks.\r\n * @internal\r\n */\r\n this._blocks = [];\r\n if (bits !== Sha256.SIZE_224 && bits !== Sha256.SIZE_256) {\r\n throw new Error(\"Only 224 or 256 bits are supported\");\r\n }\r\n this._blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\r\n if (bits === Sha256.SIZE_224) {\r\n this._h0 = 0xc1059ed8;\r\n this._h1 = 0x367cd507;\r\n this._h2 = 0x3070dd17;\r\n this._h3 = 0xf70e5939;\r\n this._h4 = 0xffc00b31;\r\n this._h5 = 0x68581511;\r\n this._h6 = 0x64f98fa7;\r\n this._h7 = 0xbefa4fa4;\r\n }\r\n else {\r\n this._h0 = 0x6a09e667;\r\n this._h1 = 0xbb67ae85;\r\n this._h2 = 0x3c6ef372;\r\n this._h3 = 0xa54ff53a;\r\n this._h4 = 0x510e527f;\r\n this._h5 = 0x9b05688c;\r\n this._h6 = 0x1f83d9ab;\r\n this._h7 = 0x5be0cd19;\r\n }\r\n this._bits = bits;\r\n this._block = 0;\r\n this._start = 0;\r\n this._bytes = 0;\r\n this._hBytes = 0;\r\n this._lastByteIndex = 0;\r\n this._finalized = false;\r\n this._hashed = false;\r\n this._first = true;\r\n }\r\n /**\r\n * Perform Sum 256 on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum 256 of the data.\r\n */\r\n static sum256(data) {\r\n const b2b = new Sha256(Sha256.SIZE_256);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Perform Sum 224 on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum 224 of the data.\r\n */\r\n static sum224(data) {\r\n const b2b = new Sha256(Sha256.SIZE_224);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n if (this._finalized) {\r\n throw new Error(\"The hash has already been finalized.\");\r\n }\r\n let index = 0;\r\n let i;\r\n const length = message.length;\r\n const blocks = this._blocks;\r\n while (index < length) {\r\n if (this._hashed) {\r\n this._hashed = false;\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n for (i = this._start; index < length && i < 64; ++index) {\r\n blocks[i >> 2] |= message[index] << Sha256.SHIFT[i++ & 3];\r\n }\r\n this._lastByteIndex = i;\r\n this._bytes += i - this._start;\r\n if (i >= 64) {\r\n this._block = blocks[16];\r\n this._start = i - 64;\r\n this.hash();\r\n this._hashed = true;\r\n }\r\n else {\r\n this._start = i;\r\n }\r\n }\r\n if (this._bytes > 4294967295) {\r\n this._hBytes += Math.trunc(this._bytes / 4294967296);\r\n this._bytes %= 4294967296;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n this.finalize();\r\n const h0 = this._h0;\r\n const h1 = this._h1;\r\n const h2 = this._h2;\r\n const h3 = this._h3;\r\n const h4 = this._h4;\r\n const h5 = this._h5;\r\n const h6 = this._h6;\r\n const h7 = this._h7;\r\n const arr = [\r\n (h0 >> 24) & 0xff,\r\n (h0 >> 16) & 0xff,\r\n (h0 >> 8) & 0xff,\r\n h0 & 0xff,\r\n (h1 >> 24) & 0xff,\r\n (h1 >> 16) & 0xff,\r\n (h1 >> 8) & 0xff,\r\n h1 & 0xff,\r\n (h2 >> 24) & 0xff,\r\n (h2 >> 16) & 0xff,\r\n (h2 >> 8) & 0xff,\r\n h2 & 0xff,\r\n (h3 >> 24) & 0xff,\r\n (h3 >> 16) & 0xff,\r\n (h3 >> 8) & 0xff,\r\n h3 & 0xff,\r\n (h4 >> 24) & 0xff,\r\n (h4 >> 16) & 0xff,\r\n (h4 >> 8) & 0xff,\r\n h4 & 0xff,\r\n (h5 >> 24) & 0xff,\r\n (h5 >> 16) & 0xff,\r\n (h5 >> 8) & 0xff,\r\n h5 & 0xff,\r\n (h6 >> 24) & 0xff,\r\n (h6 >> 16) & 0xff,\r\n (h6 >> 8) & 0xff,\r\n h6 & 0xff\r\n ];\r\n if (this._bits === Sha256.SIZE_256) {\r\n arr.push((h7 >> 24) & 0xff, (h7 >> 16) & 0xff, (h7 >> 8) & 0xff, h7 & 0xff);\r\n }\r\n return Uint8Array.from(arr);\r\n }\r\n /**\r\n * Finalize the hash.\r\n * @internal\r\n */\r\n finalize() {\r\n if (this._finalized) {\r\n return;\r\n }\r\n this._finalized = true;\r\n const blocks = this._blocks;\r\n const i = this._lastByteIndex;\r\n blocks[16] = this._block;\r\n blocks[i >> 2] |= Sha256.EXTRA[i & 3];\r\n this._block = blocks[16];\r\n if (i >= 56) {\r\n if (!this._hashed) {\r\n this.hash();\r\n }\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n }\r\n blocks[14] = (this._hBytes << 3) | (this._bytes >>> 29);\r\n blocks[15] = this._bytes << 3;\r\n this.hash();\r\n }\r\n /**\r\n * Perform the hash.\r\n * @internal\r\n */\r\n hash() {\r\n let a = this._h0;\r\n let b = this._h1;\r\n let c = this._h2;\r\n let d = this._h3;\r\n let e = this._h4;\r\n let f = this._h5;\r\n let g = this._h6;\r\n let h = this._h7;\r\n const blocks = this._blocks;\r\n let j;\r\n let s0;\r\n let s1;\r\n let maj;\r\n let t1;\r\n let t2;\r\n let ch;\r\n let ab;\r\n let da;\r\n let cd;\r\n let bc;\r\n for (j = 16; j < 64; ++j) {\r\n // rightrotate\r\n t1 = blocks[j - 15];\r\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\r\n t1 = blocks[j - 2];\r\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\r\n blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0;\r\n }\r\n bc = b & c;\r\n for (j = 0; j < 64; j += 4) {\r\n if (this._first) {\r\n if (this._bits === Sha256.SIZE_224) {\r\n ab = 300032;\r\n t1 = blocks[0] - 1413257819;\r\n h = (t1 - 150054599) << 0;\r\n d = (t1 + 24177077) << 0;\r\n }\r\n else {\r\n ab = 704751109;\r\n t1 = blocks[0] - 210244248;\r\n h = (t1 - 1521486534) << 0;\r\n d = (t1 + 143694565) << 0;\r\n }\r\n this._first = false;\r\n }\r\n else {\r\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\r\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\r\n ab = a & b;\r\n maj = ab ^ (a & c) ^ bc;\r\n ch = (e & f) ^ (~e & g);\r\n t1 = h + s1 + ch + Sha256.K[j] + blocks[j];\r\n t2 = s0 + maj;\r\n h = (d + t1) << 0;\r\n d = (t1 + t2) << 0;\r\n }\r\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\r\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\r\n da = d & a;\r\n maj = da ^ (d & b) ^ ab;\r\n ch = (h & e) ^ (~h & f);\r\n t1 = g + s1 + ch + Sha256.K[j + 1] + blocks[j + 1];\r\n t2 = s0 + maj;\r\n g = (c + t1) << 0;\r\n c = (t1 + t2) << 0;\r\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\r\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\r\n cd = c & d;\r\n maj = cd ^ (c & a) ^ da;\r\n ch = (g & h) ^ (~g & e);\r\n t1 = f + s1 + ch + Sha256.K[j + 2] + blocks[j + 2];\r\n t2 = s0 + maj;\r\n f = (b + t1) << 0;\r\n b = (t1 + t2) << 0;\r\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\r\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\r\n bc = b & c;\r\n maj = bc ^ (b & d) ^ cd;\r\n ch = (f & g) ^ (~f & h);\r\n t1 = e + s1 + ch + Sha256.K[j + 3] + blocks[j + 3];\r\n t2 = s0 + maj;\r\n e = (a + t1) << 0;\r\n a = (t1 + t2) << 0;\r\n }\r\n this._h0 += Math.trunc(a);\r\n this._h1 += Math.trunc(b);\r\n this._h2 += Math.trunc(c);\r\n this._h3 += Math.trunc(d);\r\n this._h4 += Math.trunc(e);\r\n this._h5 += Math.trunc(f);\r\n this._h6 += Math.trunc(g);\r\n this._h7 += Math.trunc(h);\r\n }\r\n}\r\n/**\r\n * Sha256 256.\r\n */\r\nSha256.SIZE_256 = 256;\r\n/**\r\n * Sha256 224.\r\n */\r\nSha256.SIZE_224 = 224;\r\n/**\r\n * Extra constants.\r\n * @internal\r\n */\r\nSha256.EXTRA = [-2147483648, 8388608, 32768, 128];\r\n/**\r\n * Shift constants.\r\n * @internal\r\n */\r\nSha256.SHIFT = [24, 16, 8, 0];\r\n/**\r\n * K.\r\n * @internal\r\n */\r\nSha256.K = Uint32Array.from([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,\r\n 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\r\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8,\r\n 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\r\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\r\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\r\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7,\r\n 0xc67178f2\r\n]);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable array-bracket-newline */\r\n/**\r\n * Class to help with Sha512 scheme\r\n * TypeScript conversion from https://github.com/emn178/js-sha512.\r\n */\r\nexport class Sha512 {\r\n /**\r\n * Create a new instance of Sha512.\r\n * @param bits The number of bits.\r\n */\r\n constructor(bits = Sha512.SIZE_512) {\r\n /**\r\n * Blocks.\r\n * @internal\r\n */\r\n this._blocks = [];\r\n if (bits !== Sha512.SIZE_224 &&\r\n bits !== Sha512.SIZE_256 &&\r\n bits !== Sha512.SIZE_384 &&\r\n bits !== Sha512.SIZE_512) {\r\n throw new Error(\"Only 224, 256, 384 or 512 bits are supported\");\r\n }\r\n this._blocks = [\r\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\r\n ];\r\n if (bits === Sha512.SIZE_384) {\r\n this._h0h = 0xcbbb9d5d;\r\n this._h0l = 0xc1059ed8;\r\n this._h1h = 0x629a292a;\r\n this._h1l = 0x367cd507;\r\n this._h2h = 0x9159015a;\r\n this._h2l = 0x3070dd17;\r\n this._h3h = 0x152fecd8;\r\n this._h3l = 0xf70e5939;\r\n this._h4h = 0x67332667;\r\n this._h4l = 0xffc00b31;\r\n this._h5h = 0x8eb44a87;\r\n this._h5l = 0x68581511;\r\n this._h6h = 0xdb0c2e0d;\r\n this._h6l = 0x64f98fa7;\r\n this._h7h = 0x47b5481d;\r\n this._h7l = 0xbefa4fa4;\r\n }\r\n else if (bits === Sha512.SIZE_256) {\r\n this._h0h = 0x22312194;\r\n this._h0l = 0xfc2bf72c;\r\n this._h1h = 0x9f555fa3;\r\n this._h1l = 0xc84c64c2;\r\n this._h2h = 0x2393b86b;\r\n this._h2l = 0x6f53b151;\r\n this._h3h = 0x96387719;\r\n this._h3l = 0x5940eabd;\r\n this._h4h = 0x96283ee2;\r\n this._h4l = 0xa88effe3;\r\n this._h5h = 0xbe5e1e25;\r\n this._h5l = 0x53863992;\r\n this._h6h = 0x2b0199fc;\r\n this._h6l = 0x2c85b8aa;\r\n this._h7h = 0x0eb72ddc;\r\n this._h7l = 0x81c52ca2;\r\n }\r\n else if (bits === Sha512.SIZE_224) {\r\n this._h0h = 0x8c3d37c8;\r\n this._h0l = 0x19544da2;\r\n this._h1h = 0x73e19966;\r\n this._h1l = 0x89dcd4d6;\r\n this._h2h = 0x1dfab7ae;\r\n this._h2l = 0x32ff9c82;\r\n this._h3h = 0x679dd514;\r\n this._h3l = 0x582f9fcf;\r\n this._h4h = 0x0f6d2b69;\r\n this._h4l = 0x7bd44da8;\r\n this._h5h = 0x77e36f73;\r\n this._h5l = 0x04c48942;\r\n this._h6h = 0x3f9d85a8;\r\n this._h6l = 0x6a1d36c8;\r\n this._h7h = 0x1112e6ad;\r\n this._h7l = 0x91d692a1;\r\n }\r\n else {\r\n // 512\r\n this._h0h = 0x6a09e667;\r\n this._h0l = 0xf3bcc908;\r\n this._h1h = 0xbb67ae85;\r\n this._h1l = 0x84caa73b;\r\n this._h2h = 0x3c6ef372;\r\n this._h2l = 0xfe94f82b;\r\n this._h3h = 0xa54ff53a;\r\n this._h3l = 0x5f1d36f1;\r\n this._h4h = 0x510e527f;\r\n this._h4l = 0xade682d1;\r\n this._h5h = 0x9b05688c;\r\n this._h5l = 0x2b3e6c1f;\r\n this._h6h = 0x1f83d9ab;\r\n this._h6l = 0xfb41bd6b;\r\n this._h7h = 0x5be0cd19;\r\n this._h7l = 0x137e2179;\r\n }\r\n this._bits = bits;\r\n this._block = 0;\r\n this._start = 0;\r\n this._bytes = 0;\r\n this._hBytes = 0;\r\n this._lastByteIndex = 0;\r\n this._finalized = false;\r\n this._hashed = false;\r\n }\r\n /**\r\n * Perform Sum 512 on the data.\r\n * @param data The data to operate on.\r\n * @returns The sum 512 of the data.\r\n */\r\n static sum512(data) {\r\n const b2b = new Sha512(Sha512.SIZE_512);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n if (this._finalized) {\r\n throw new Error(\"The hash has already been finalized.\");\r\n }\r\n let index = 0;\r\n let i;\r\n const length = message.length;\r\n const blocks = this._blocks;\r\n while (index < length) {\r\n if (this._hashed) {\r\n this._hashed = false;\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n blocks[17] = 0;\r\n blocks[18] = 0;\r\n blocks[19] = 0;\r\n blocks[20] = 0;\r\n blocks[21] = 0;\r\n blocks[22] = 0;\r\n blocks[23] = 0;\r\n blocks[24] = 0;\r\n blocks[25] = 0;\r\n blocks[26] = 0;\r\n blocks[27] = 0;\r\n blocks[28] = 0;\r\n blocks[29] = 0;\r\n blocks[30] = 0;\r\n blocks[31] = 0;\r\n blocks[32] = 0;\r\n }\r\n for (i = this._start; index < length && i < 128; ++index) {\r\n blocks[i >> 2] |= message[index] << Sha512.SHIFT[i++ & 3];\r\n }\r\n this._lastByteIndex = i;\r\n this._bytes += i - this._start;\r\n if (i >= 128) {\r\n this._block = blocks[32];\r\n this._start = i - 128;\r\n this.hash();\r\n this._hashed = true;\r\n }\r\n else {\r\n this._start = i;\r\n }\r\n }\r\n if (this._bytes > 4294967295) {\r\n this._hBytes += Math.trunc(this._bytes / 4294967296);\r\n this._bytes %= 4294967296;\r\n }\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n this.finalize();\r\n const h0h = this._h0h;\r\n const h0l = this._h0l;\r\n const h1h = this._h1h;\r\n const h1l = this._h1l;\r\n const h2h = this._h2h;\r\n const h2l = this._h2l;\r\n const h3h = this._h3h;\r\n const h3l = this._h3l;\r\n const h4h = this._h4h;\r\n const h4l = this._h4l;\r\n const h5h = this._h5h;\r\n const h5l = this._h5l;\r\n const h6h = this._h6h;\r\n const h6l = this._h6l;\r\n const h7h = this._h7h;\r\n const h7l = this._h7l;\r\n const bits = this._bits;\r\n const arr = [\r\n (h0h >> 24) & 0xff,\r\n (h0h >> 16) & 0xff,\r\n (h0h >> 8) & 0xff,\r\n h0h & 0xff,\r\n (h0l >> 24) & 0xff,\r\n (h0l >> 16) & 0xff,\r\n (h0l >> 8) & 0xff,\r\n h0l & 0xff,\r\n (h1h >> 24) & 0xff,\r\n (h1h >> 16) & 0xff,\r\n (h1h >> 8) & 0xff,\r\n h1h & 0xff,\r\n (h1l >> 24) & 0xff,\r\n (h1l >> 16) & 0xff,\r\n (h1l >> 8) & 0xff,\r\n h1l & 0xff,\r\n (h2h >> 24) & 0xff,\r\n (h2h >> 16) & 0xff,\r\n (h2h >> 8) & 0xff,\r\n h2h & 0xff,\r\n (h2l >> 24) & 0xff,\r\n (h2l >> 16) & 0xff,\r\n (h2l >> 8) & 0xff,\r\n h2l & 0xff,\r\n (h3h >> 24) & 0xff,\r\n (h3h >> 16) & 0xff,\r\n (h3h >> 8) & 0xff,\r\n h3h & 0xff\r\n ];\r\n if (bits >= Sha512.SIZE_256) {\r\n arr.push((h3l >> 24) & 0xff, (h3l >> 16) & 0xff, (h3l >> 8) & 0xff, h3l & 0xff);\r\n }\r\n if (bits >= Sha512.SIZE_384) {\r\n arr.push((h4h >> 24) & 0xff, (h4h >> 16) & 0xff, (h4h >> 8) & 0xff, h4h & 0xff, (h4l >> 24) & 0xff, (h4l >> 16) & 0xff, (h4l >> 8) & 0xff, h4l & 0xff, (h5h >> 24) & 0xff, (h5h >> 16) & 0xff, (h5h >> 8) & 0xff, h5h & 0xff, (h5l >> 24) & 0xff, (h5l >> 16) & 0xff, (h5l >> 8) & 0xff, h5l & 0xff);\r\n }\r\n if (bits === Sha512.SIZE_512) {\r\n arr.push((h6h >> 24) & 0xff, (h6h >> 16) & 0xff, (h6h >> 8) & 0xff, h6h & 0xff, (h6l >> 24) & 0xff, (h6l >> 16) & 0xff, (h6l >> 8) & 0xff, h6l & 0xff, (h7h >> 24) & 0xff, (h7h >> 16) & 0xff, (h7h >> 8) & 0xff, h7h & 0xff, (h7l >> 24) & 0xff, (h7l >> 16) & 0xff, (h7l >> 8) & 0xff, h7l & 0xff);\r\n }\r\n return Uint8Array.from(arr);\r\n }\r\n /**\r\n * Finalize the hash.\r\n * @internal\r\n */\r\n finalize() {\r\n if (this._finalized) {\r\n return;\r\n }\r\n this._finalized = true;\r\n const blocks = this._blocks;\r\n const i = this._lastByteIndex;\r\n blocks[32] = this._block;\r\n blocks[i >> 2] |= Sha512.EXTRA[i & 3];\r\n this._block = blocks[32];\r\n if (i >= 112) {\r\n if (!this._hashed) {\r\n this.hash();\r\n }\r\n blocks[0] = this._block;\r\n blocks[1] = 0;\r\n blocks[2] = 0;\r\n blocks[3] = 0;\r\n blocks[4] = 0;\r\n blocks[5] = 0;\r\n blocks[6] = 0;\r\n blocks[7] = 0;\r\n blocks[8] = 0;\r\n blocks[9] = 0;\r\n blocks[10] = 0;\r\n blocks[11] = 0;\r\n blocks[12] = 0;\r\n blocks[13] = 0;\r\n blocks[14] = 0;\r\n blocks[15] = 0;\r\n blocks[16] = 0;\r\n blocks[17] = 0;\r\n blocks[18] = 0;\r\n blocks[19] = 0;\r\n blocks[20] = 0;\r\n blocks[21] = 0;\r\n blocks[22] = 0;\r\n blocks[23] = 0;\r\n blocks[24] = 0;\r\n blocks[25] = 0;\r\n blocks[26] = 0;\r\n blocks[27] = 0;\r\n blocks[28] = 0;\r\n blocks[29] = 0;\r\n blocks[30] = 0;\r\n blocks[31] = 0;\r\n blocks[32] = 0;\r\n }\r\n blocks[30] = (this._hBytes << 3) | (this._bytes >>> 29);\r\n blocks[31] = this._bytes << 3;\r\n this.hash();\r\n }\r\n /**\r\n * Perform the hash.\r\n * @internal\r\n */\r\n hash() {\r\n const h0h = this._h0h;\r\n const h0l = this._h0l;\r\n const h1h = this._h1h;\r\n const h1l = this._h1l;\r\n const h2h = this._h2h;\r\n const h2l = this._h2l;\r\n const h3h = this._h3h;\r\n const h3l = this._h3l;\r\n const h4h = this._h4h;\r\n const h4l = this._h4l;\r\n const h5h = this._h5h;\r\n const h5l = this._h5l;\r\n const h6h = this._h6h;\r\n const h6l = this._h6l;\r\n const h7h = this._h7h;\r\n const h7l = this._h7l;\r\n const blocks = this._blocks;\r\n let j;\r\n let s0h;\r\n let s0l;\r\n let s1h;\r\n let s1l;\r\n let c1;\r\n let c2;\r\n let c3;\r\n let c4;\r\n let abh;\r\n let abl;\r\n let dah;\r\n let dal;\r\n let cdh;\r\n let cdl;\r\n let bch;\r\n let bcl;\r\n let majh;\r\n let majl;\r\n let t1h;\r\n let t1l;\r\n let t2h;\r\n let t2l;\r\n let chh;\r\n let chl;\r\n for (j = 32; j < 160; j += 2) {\r\n t1h = blocks[j - 30];\r\n t1l = blocks[j - 29];\r\n s0h = ((t1h >>> 1) | (t1l << 31)) ^ ((t1h >>> 8) | (t1l << 24)) ^ (t1h >>> 7);\r\n s0l = ((t1l >>> 1) | (t1h << 31)) ^ ((t1l >>> 8) | (t1h << 24)) ^ ((t1l >>> 7) | (t1h << 25));\r\n t1h = blocks[j - 4];\r\n t1l = blocks[j - 3];\r\n s1h = ((t1h >>> 19) | (t1l << 13)) ^ ((t1l >>> 29) | (t1h << 3)) ^ (t1h >>> 6);\r\n s1l = ((t1l >>> 19) | (t1h << 13)) ^ ((t1h >>> 29) | (t1l << 3)) ^ ((t1l >>> 6) | (t1h << 26));\r\n t1h = blocks[j - 32];\r\n t1l = blocks[j - 31];\r\n t2h = blocks[j - 14];\r\n t2l = blocks[j - 13];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (s0l & 0xffff) + (s1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (s0l >>> 16) + (s1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (s0h & 0xffff) + (s1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (s0h >>> 16) + (s1h >>> 16) + (c3 >>> 16);\r\n blocks[j] = (c4 << 16) | (c3 & 0xffff);\r\n blocks[j + 1] = (c2 << 16) | (c1 & 0xffff);\r\n }\r\n let ah = h0h;\r\n let al = h0l;\r\n let bh = h1h;\r\n let bl = h1l;\r\n let ch = h2h;\r\n let cl = h2l;\r\n let dh = h3h;\r\n let dl = h3l;\r\n let eh = h4h;\r\n let el = h4l;\r\n let fh = h5h;\r\n let fl = h5l;\r\n let gh = h6h;\r\n let gl = h6l;\r\n let hh = h7h;\r\n let hl = h7l;\r\n bch = bh & ch;\r\n bcl = bl & cl;\r\n for (j = 0; j < 160; j += 8) {\r\n s0h = ((ah >>> 28) | (al << 4)) ^ ((al >>> 2) | (ah << 30)) ^ ((al >>> 7) | (ah << 25));\r\n s0l = ((al >>> 28) | (ah << 4)) ^ ((ah >>> 2) | (al << 30)) ^ ((ah >>> 7) | (al << 25));\r\n s1h = ((eh >>> 14) | (el << 18)) ^ ((eh >>> 18) | (el << 14)) ^ ((el >>> 9) | (eh << 23));\r\n s1l = ((el >>> 14) | (eh << 18)) ^ ((el >>> 18) | (eh << 14)) ^ ((eh >>> 9) | (el << 23));\r\n abh = ah & bh;\r\n abl = al & bl;\r\n majh = abh ^ (ah & ch) ^ bch;\r\n majl = abl ^ (al & cl) ^ bcl;\r\n chh = (eh & fh) ^ (~eh & gh);\r\n chl = (el & fl) ^ (~el & gl);\r\n t1h = blocks[j];\r\n t1l = blocks[j + 1];\r\n t2h = Sha512.K[j];\r\n t2l = Sha512.K[j + 1];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (hl & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (hl >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (hh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (dl & 0xffff) + (t1l & 0xffff);\r\n c2 = (dl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (dh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (dh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n hh = (c4 << 16) | (c3 & 0xffff);\r\n hl = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n dh = (c4 << 16) | (c3 & 0xffff);\r\n dl = (c2 << 16) | (c1 & 0xffff);\r\n s0h = ((dh >>> 28) | (dl << 4)) ^ ((dl >>> 2) | (dh << 30)) ^ ((dl >>> 7) | (dh << 25));\r\n s0l = ((dl >>> 28) | (dh << 4)) ^ ((dh >>> 2) | (dl << 30)) ^ ((dh >>> 7) | (dl << 25));\r\n s1h = ((hh >>> 14) | (hl << 18)) ^ ((hh >>> 18) | (hl << 14)) ^ ((hl >>> 9) | (hh << 23));\r\n s1l = ((hl >>> 14) | (hh << 18)) ^ ((hl >>> 18) | (hh << 14)) ^ ((hh >>> 9) | (hl << 23));\r\n dah = dh & ah;\r\n dal = dl & al;\r\n majh = dah ^ (dh & bh) ^ abh;\r\n majl = dal ^ (dl & bl) ^ abl;\r\n chh = (hh & eh) ^ (~hh & fh);\r\n chl = (hl & el) ^ (~hl & fl);\r\n t1h = blocks[j + 2];\r\n t1l = blocks[j + 3];\r\n t2h = Sha512.K[j + 2];\r\n t2l = Sha512.K[j + 3];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (gl & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (gl >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (gh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (cl & 0xffff) + (t1l & 0xffff);\r\n c2 = (cl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (ch & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (ch >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n gh = (c4 << 16) | (c3 & 0xffff);\r\n gl = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n ch = (c4 << 16) | (c3 & 0xffff);\r\n cl = (c2 << 16) | (c1 & 0xffff);\r\n s0h = ((ch >>> 28) | (cl << 4)) ^ ((cl >>> 2) | (ch << 30)) ^ ((cl >>> 7) | (ch << 25));\r\n s0l = ((cl >>> 28) | (ch << 4)) ^ ((ch >>> 2) | (cl << 30)) ^ ((ch >>> 7) | (cl << 25));\r\n s1h = ((gh >>> 14) | (gl << 18)) ^ ((gh >>> 18) | (gl << 14)) ^ ((gl >>> 9) | (gh << 23));\r\n s1l = ((gl >>> 14) | (gh << 18)) ^ ((gl >>> 18) | (gh << 14)) ^ ((gh >>> 9) | (gl << 23));\r\n cdh = ch & dh;\r\n cdl = cl & dl;\r\n majh = cdh ^ (ch & ah) ^ dah;\r\n majl = cdl ^ (cl & al) ^ dal;\r\n chh = (gh & hh) ^ (~gh & eh);\r\n chl = (gl & hl) ^ (~gl & el);\r\n t1h = blocks[j + 4];\r\n t1l = blocks[j + 5];\r\n t2h = Sha512.K[j + 4];\r\n t2l = Sha512.K[j + 5];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (fl & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (fl >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (fh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (bl & 0xffff) + (t1l & 0xffff);\r\n c2 = (bl >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (bh & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (bh >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n fh = (c4 << 16) | (c3 & 0xffff);\r\n fl = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n bh = (c4 << 16) | (c3 & 0xffff);\r\n bl = (c2 << 16) | (c1 & 0xffff);\r\n s0h = ((bh >>> 28) | (bl << 4)) ^ ((bl >>> 2) | (bh << 30)) ^ ((bl >>> 7) | (bh << 25));\r\n s0l = ((bl >>> 28) | (bh << 4)) ^ ((bh >>> 2) | (bl << 30)) ^ ((bh >>> 7) | (bl << 25));\r\n s1h = ((fh >>> 14) | (fl << 18)) ^ ((fh >>> 18) | (fl << 14)) ^ ((fl >>> 9) | (fh << 23));\r\n s1l = ((fl >>> 14) | (fh << 18)) ^ ((fl >>> 18) | (fh << 14)) ^ ((fh >>> 9) | (fl << 23));\r\n bch = bh & ch;\r\n bcl = bl & cl;\r\n majh = bch ^ (bh & dh) ^ cdh;\r\n majl = bcl ^ (bl & dl) ^ cdl;\r\n chh = (fh & gh) ^ (~fh & hh);\r\n chl = (fl & gl) ^ (~fl & hl);\r\n t1h = blocks[j + 6];\r\n t1l = blocks[j + 7];\r\n t2h = Sha512.K[j + 6];\r\n t2l = Sha512.K[j + 7];\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff) + (chl & 0xffff) + (s1l & 0xffff) + (el & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (chl >>> 16) + (s1l >>> 16) + (el >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (chh & 0xffff) + (s1h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (chh >>> 16) + (s1h >>> 16) + (eh >>> 16) + (c3 >>> 16);\r\n t1h = (c4 << 16) | (c3 & 0xffff);\r\n t1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (majl & 0xffff) + (s0l & 0xffff);\r\n c2 = (majl >>> 16) + (s0l >>> 16) + (c1 >>> 16);\r\n c3 = (majh & 0xffff) + (s0h & 0xffff) + (c2 >>> 16);\r\n c4 = (majh >>> 16) + (s0h >>> 16) + (c3 >>> 16);\r\n t2h = (c4 << 16) | (c3 & 0xffff);\r\n t2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (al & 0xffff) + (t1l & 0xffff);\r\n c2 = (al >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (ah & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (ah >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n eh = (c4 << 16) | (c3 & 0xffff);\r\n el = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (t2l & 0xffff) + (t1l & 0xffff);\r\n c2 = (t2l >>> 16) + (t1l >>> 16) + (c1 >>> 16);\r\n c3 = (t2h & 0xffff) + (t1h & 0xffff) + (c2 >>> 16);\r\n c4 = (t2h >>> 16) + (t1h >>> 16) + (c3 >>> 16);\r\n ah = (c4 << 16) | (c3 & 0xffff);\r\n al = (c2 << 16) | (c1 & 0xffff);\r\n }\r\n c1 = (h0l & 0xffff) + (al & 0xffff);\r\n c2 = (h0l >>> 16) + (al >>> 16) + (c1 >>> 16);\r\n c3 = (h0h & 0xffff) + (ah & 0xffff) + (c2 >>> 16);\r\n c4 = (h0h >>> 16) + (ah >>> 16) + (c3 >>> 16);\r\n this._h0h = (c4 << 16) | (c3 & 0xffff);\r\n this._h0l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h1l & 0xffff) + (bl & 0xffff);\r\n c2 = (h1l >>> 16) + (bl >>> 16) + (c1 >>> 16);\r\n c3 = (h1h & 0xffff) + (bh & 0xffff) + (c2 >>> 16);\r\n c4 = (h1h >>> 16) + (bh >>> 16) + (c3 >>> 16);\r\n this._h1h = (c4 << 16) | (c3 & 0xffff);\r\n this._h1l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h2l & 0xffff) + (cl & 0xffff);\r\n c2 = (h2l >>> 16) + (cl >>> 16) + (c1 >>> 16);\r\n c3 = (h2h & 0xffff) + (ch & 0xffff) + (c2 >>> 16);\r\n c4 = (h2h >>> 16) + (ch >>> 16) + (c3 >>> 16);\r\n this._h2h = (c4 << 16) | (c3 & 0xffff);\r\n this._h2l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h3l & 0xffff) + (dl & 0xffff);\r\n c2 = (h3l >>> 16) + (dl >>> 16) + (c1 >>> 16);\r\n c3 = (h3h & 0xffff) + (dh & 0xffff) + (c2 >>> 16);\r\n c4 = (h3h >>> 16) + (dh >>> 16) + (c3 >>> 16);\r\n this._h3h = (c4 << 16) | (c3 & 0xffff);\r\n this._h3l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h4l & 0xffff) + (el & 0xffff);\r\n c2 = (h4l >>> 16) + (el >>> 16) + (c1 >>> 16);\r\n c3 = (h4h & 0xffff) + (eh & 0xffff) + (c2 >>> 16);\r\n c4 = (h4h >>> 16) + (eh >>> 16) + (c3 >>> 16);\r\n this._h4h = (c4 << 16) | (c3 & 0xffff);\r\n this._h4l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h5l & 0xffff) + (fl & 0xffff);\r\n c2 = (h5l >>> 16) + (fl >>> 16) + (c1 >>> 16);\r\n c3 = (h5h & 0xffff) + (fh & 0xffff) + (c2 >>> 16);\r\n c4 = (h5h >>> 16) + (fh >>> 16) + (c3 >>> 16);\r\n this._h5h = (c4 << 16) | (c3 & 0xffff);\r\n this._h5l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h6l & 0xffff) + (gl & 0xffff);\r\n c2 = (h6l >>> 16) + (gl >>> 16) + (c1 >>> 16);\r\n c3 = (h6h & 0xffff) + (gh & 0xffff) + (c2 >>> 16);\r\n c4 = (h6h >>> 16) + (gh >>> 16) + (c3 >>> 16);\r\n this._h6h = (c4 << 16) | (c3 & 0xffff);\r\n this._h6l = (c2 << 16) | (c1 & 0xffff);\r\n c1 = (h7l & 0xffff) + (hl & 0xffff);\r\n c2 = (h7l >>> 16) + (hl >>> 16) + (c1 >>> 16);\r\n c3 = (h7h & 0xffff) + (hh & 0xffff) + (c2 >>> 16);\r\n c4 = (h7h >>> 16) + (hh >>> 16) + (c3 >>> 16);\r\n this._h7h = (c4 << 16) | (c3 & 0xffff);\r\n this._h7l = (c2 << 16) | (c1 & 0xffff);\r\n }\r\n}\r\n/**\r\n * Sha512 224.\r\n */\r\nSha512.SIZE_224 = 224;\r\n/**\r\n * Sha512 256.\r\n */\r\nSha512.SIZE_256 = 256;\r\n/**\r\n * Sha512 384.\r\n */\r\nSha512.SIZE_384 = 384;\r\n/**\r\n * Sha512 512.\r\n */\r\nSha512.SIZE_512 = 512;\r\n/**\r\n * Extra constants.\r\n * @internal\r\n */\r\nSha512.EXTRA = [-2147483648, 8388608, 32768, 128];\r\n/**\r\n * Shift constants.\r\n * @internal\r\n */\r\nSha512.SHIFT = [24, 16, 8, 0];\r\n/**\r\n * K.\r\n * @internal\r\n */\r\nSha512.K = Uint32Array.from([\r\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd, 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc, 0x3956c25b,\r\n 0xf348b538, 0x59f111f1, 0xb605d019, 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118, 0xd807aa98, 0xa3030242,\r\n 0x12835b01, 0x45706fbe, 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2, 0x72be5d74, 0xf27b896f, 0x80deb1fe,\r\n 0x3b1696b1, 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694, 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\r\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65, 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483, 0x5cb0a9dc,\r\n 0xbd41fbd4, 0x76f988da, 0x831153b5, 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210, 0xb00327c8, 0x98fb213f,\r\n 0xbf597fc7, 0xbeef0ee4, 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725, 0x06ca6351, 0xe003826f, 0x14292967,\r\n 0x0a0e6e70, 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926, 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\r\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8, 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b, 0xa2bfe8a1,\r\n 0x4cf10364, 0xa81a664b, 0xbc423001, 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30, 0xd192e819, 0xd6ef5218,\r\n 0xd6990624, 0x5565a910, 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8, 0x19a4c116, 0xb8d2d0c8, 0x1e376c08,\r\n 0x5141ab53, 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8, 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\r\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3, 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60, 0x84c87814,\r\n 0xa1f0ab72, 0x8cc70208, 0x1a6439ec, 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9, 0xbef9a3f7, 0xb2c67915,\r\n 0xc67178f2, 0xe372532b, 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207, 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f,\r\n 0xee6ed178, 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6, 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\r\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493, 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c, 0x4cc5d4be,\r\n 0xcb3e42b6, 0x597f299c, 0xfc657e2a, 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\r\n]);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/**\r\n * Class to help with random generation.\r\n */\r\nexport class RandomHelper {\r\n /**\r\n * Generate a new random array.\r\n * @param length The length of buffer to create.\r\n * @returns The random array.\r\n */\r\n static generate(length) {\r\n return RandomHelper.randomPolyfill ? RandomHelper.randomPolyfill(length) : new Uint8Array(length);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { RandomHelper } from \"./utils/randomHelper.mjs\";\r\n// Random\r\nif (!RandomHelper.randomPolyfill) {\r\n RandomHelper.randomPolyfill = length => {\r\n const randomBytes = new Uint8Array(length);\r\n window.crypto.getRandomValues(randomBytes);\r\n return randomBytes;\r\n };\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to help with base32 Encoding/Decoding using RFC4648.\r\n */\r\nexport class Base32 {\r\n /**\r\n * Convert the base 32 string to a byte array.\r\n * @param base32 The base32 string to convert.\r\n * @returns The byte array.\r\n * @throws If the input string contains a character not in the Base32 alphabet.\r\n */\r\n static decode(base32) {\r\n let bits = 0;\r\n let value = 0;\r\n // eslint-disable-next-line no-div-regex\r\n base32 = base32.replace(/=+$/, \"\");\r\n let index = 0;\r\n const output = new Uint8Array(Math.trunc((base32.length * 5) / 8));\r\n for (let i = 0; i < base32.length; i++) {\r\n const idx = Base32._ALPHABET.indexOf(base32[i]);\r\n if (idx === -1) {\r\n throw new Error(`\"Invalid character found '${base32[i]}'`);\r\n }\r\n value = (value << 5) | idx;\r\n bits += 5;\r\n if (bits >= 8) {\r\n output[index++] = (value >>> (bits - 8)) & 255;\r\n bits -= 8;\r\n }\r\n }\r\n return output;\r\n }\r\n /**\r\n * Convert a byte array to base 32.\r\n * @param bytes The byte array to convert.\r\n * @returns The data as base32 string.\r\n */\r\n static encode(bytes) {\r\n let bits = 0;\r\n let value = 0;\r\n let output = \"\";\r\n for (let i = 0; i < bytes.byteLength; i++) {\r\n value = (value << 8) | bytes[i];\r\n bits += 8;\r\n while (bits >= 5) {\r\n output += Base32._ALPHABET[(value >>> (bits - 5)) & 31];\r\n bits -= 5;\r\n }\r\n }\r\n if (bits > 0) {\r\n output += Base32._ALPHABET[(value << (5 - bits)) & 31];\r\n }\r\n while (output.length % 8 !== 0) {\r\n output += \"=\";\r\n }\r\n return output;\r\n }\r\n}\r\n/**\r\n * Alphabet table for encoding.\r\n * @internal\r\n */\r\nBase32._ALPHABET = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567\";\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * Class to help with base58 Encoding/Decoding.\r\n */\r\nexport class Base58 {\r\n /**\r\n * Convert the base 58 string to a byte array.\r\n * @param base58 The base58 string to convert.\r\n * @returns The byte array.\r\n * @throws If the input string contains a character not in the Base58 alphabet.\r\n */\r\n static decode(base58) {\r\n let zeroes = 0;\r\n for (let i = 0; i < base58.length; i++) {\r\n if (base58[i] !== \"1\") {\r\n break;\r\n }\r\n zeroes += 1;\r\n }\r\n const size = Math.trunc((base58.length * 733) / 1000) + 1;\r\n const b256 = size <= 128 ? new Uint8Array(128).fill(0) : Buffer.alloc(size);\r\n let length = 0;\r\n for (let i = zeroes; i < base58.length; i++) {\r\n const ch = base58.charCodeAt(i);\r\n if (ch & 0xff80) {\r\n throw new Error(`\"Invalid character found '${ch}'`);\r\n }\r\n const val = Base58._ALPHABET_REVERSE[ch];\r\n if (val === -1) {\r\n throw new Error(`\"Invalid character found '${ch}'`);\r\n }\r\n let carry = val;\r\n let j = 0;\r\n for (let k = size - 1; k >= 0; k--, j++) {\r\n if (carry === 0 && j >= length) {\r\n break;\r\n }\r\n carry += b256[k] * 58;\r\n b256[k] = carry;\r\n carry >>>= 8;\r\n }\r\n length = j;\r\n }\r\n const out = new Uint8Array(zeroes + length);\r\n let j;\r\n for (j = 0; j < zeroes; j++) {\r\n out[j] = 0;\r\n }\r\n let i = size - length;\r\n while (i < size) {\r\n out[j++] = b256[i++];\r\n }\r\n return out;\r\n }\r\n /**\r\n * Convert a byte array to base 58.\r\n * @param bytes The byte array to encode.\r\n * @returns The data as base58 string.\r\n */\r\n static encode(bytes) {\r\n let zeroes = 0;\r\n for (let i = 0; i < bytes.length; i++) {\r\n if (bytes[i] !== 0) {\r\n break;\r\n }\r\n zeroes += 1;\r\n }\r\n const size = Math.trunc(((bytes.length - zeroes) * 138) / 100) + 1;\r\n const b58 = size <= 128 ? new Uint8Array(128).fill(0) : Buffer.alloc(size);\r\n let length = 0;\r\n for (let i = zeroes; i < bytes.length; i++) {\r\n let carry = bytes[i];\r\n let j = 0;\r\n for (let k = size - 1; k >= 0; k--, j++) {\r\n if (carry === 0 && j >= length) {\r\n break;\r\n }\r\n carry += b58[k] * 256;\r\n b58[k] = carry % 58;\r\n carry = Math.trunc(carry / 58);\r\n }\r\n length = j;\r\n }\r\n let i = size - length;\r\n while (i < size && b58[i] === 0) {\r\n i += 1;\r\n }\r\n let str = \"\";\r\n for (let j = 0; j < zeroes; j++) {\r\n str += \"1\";\r\n }\r\n while (i < size) {\r\n str += Base58._ALPHABET[b58[i++]];\r\n }\r\n return str;\r\n }\r\n}\r\n/**\r\n * Alphabet table for encoding.\r\n * @internal\r\n */\r\nBase58._ALPHABET = \"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\";\r\n/**\r\n * Reverse map for decoding.\r\n * @internal\r\n */\r\nBase58._ALPHABET_REVERSE = [\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\r\n -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8,\r\n -1, -1, -1, -1, -1, -1, -1, 9, 10, 11, 12, 13, 14, 15, 16, -1, 17, 18, 19, 20, 21, -1, 22, 23, 24, 25, 26, 27,\r\n 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, -1, 44, 45, 46, 47, 48,\r\n 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, -1, -1, -1, -1\r\n];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/**\r\n * Class to help with base64 Encoding/Decoding.\r\n * Sourced from https://github.com/beatgammit/base64-js.\r\n */\r\nexport class Base64 {\r\n /**\r\n * Get the byte length of the data.\r\n * @param base64 The base64 string.\r\n * @returns The byte length of the data.\r\n */\r\n static byteLength(base64) {\r\n const lens = Base64.getLengths(base64);\r\n return Base64.calcByteLength(lens[0], lens[1]);\r\n }\r\n /**\r\n * Convert the base 64 string to a byte array.\r\n * @param base64 The base64 string to convert.\r\n * @returns The byte array.\r\n */\r\n static decode(base64) {\r\n let tmp;\r\n const lens = Base64.getLengths(base64);\r\n const validLen = lens[0];\r\n const placeHoldersLen = lens[1];\r\n const arr = new Uint8Array(Base64.calcByteLength(validLen, placeHoldersLen));\r\n let curByte = 0;\r\n // if there are placeholders, only get up to the last complete 4 chars\r\n const len = placeHoldersLen > 0 ? validLen - 4 : validLen;\r\n let i;\r\n for (i = 0; i < len; i += 4) {\r\n tmp =\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 18) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] << 12) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 2)] << 6) |\r\n Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 3)];\r\n arr[curByte++] = (tmp >> 16) & 0xff;\r\n arr[curByte++] = (tmp >> 8) & 0xff;\r\n arr[curByte++] = tmp & 0xff;\r\n }\r\n if (placeHoldersLen === 2) {\r\n tmp =\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 2) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] >> 4);\r\n arr[curByte++] = tmp & 0xff;\r\n }\r\n if (placeHoldersLen === 1) {\r\n tmp =\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i)] << 10) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 1)] << 4) |\r\n (Base64._REVERSE_LOOKUP[base64.charCodeAt(i + 2)] >> 2);\r\n arr[curByte++] = (tmp >> 8) & 0xff;\r\n arr[curByte++] = tmp & 0xff;\r\n }\r\n return arr;\r\n }\r\n /**\r\n * Convert a byte array to base 64.\r\n * @param bytes The byte array to convert.\r\n * @returns The data as bas64 string.\r\n */\r\n static encode(bytes) {\r\n let tmp;\r\n const len = bytes.length;\r\n const extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\r\n const parts = [];\r\n const maxChunkLength = 16383; // must be multiple of 3\r\n // go through the array every three bytes, we'll deal with trailing stuff later\r\n for (let i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\r\n parts.push(Base64.encodeChunk(bytes, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\r\n }\r\n // pad the end with zeros, but make sure to not forget the extra bytes\r\n if (extraBytes === 1) {\r\n tmp = bytes[len - 1];\r\n parts.push(`${Base64._LOOKUP[tmp >> 2] + Base64._LOOKUP[(tmp << 4) & 0x3f]}==`);\r\n }\r\n else if (extraBytes === 2) {\r\n tmp = (bytes[len - 2] << 8) + bytes[len - 1];\r\n parts.push(`${Base64._LOOKUP[tmp >> 10] + Base64._LOOKUP[(tmp >> 4) & 0x3f] + Base64._LOOKUP[(tmp << 2) & 0x3f]}=`);\r\n }\r\n return parts.join(\"\");\r\n }\r\n /**\r\n * Calculate the byte length.\r\n * @param validLen The valid length.\r\n * @param placeHoldersLen The placeholder length.\r\n * @returns The length.\r\n * @internal\r\n */\r\n static calcByteLength(validLen, placeHoldersLen) {\r\n return ((validLen + placeHoldersLen) * 3) / 4 - placeHoldersLen;\r\n }\r\n /**\r\n * Get the valid and placeholder lengths from a bas64 string.\r\n * @param base64 The base64 string.\r\n * @returns The lengths.\r\n * @internal\r\n */\r\n static getLengths(base64) {\r\n const len = base64.length;\r\n if (len % 4 > 0) {\r\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\r\n }\r\n // Trim off extra bytes after placeholder bytes are found\r\n // See: https://github.com/beatgammit/base64-js/issues/42\r\n let validLen = base64.indexOf(\"=\");\r\n if (validLen === -1) {\r\n validLen = len;\r\n }\r\n const placeHoldersLen = validLen === len ? 0 : 4 - (validLen % 4);\r\n return [validLen, placeHoldersLen];\r\n }\r\n /**\r\n * Convert the triplet to base 64.\r\n * @param num The number to convert.\r\n * @returns The base64 erncoding.\r\n * @internal\r\n */\r\n static tripletToBase64(num) {\r\n return (Base64._LOOKUP[(num >> 18) & 0x3f] +\r\n Base64._LOOKUP[(num >> 12) & 0x3f] +\r\n Base64._LOOKUP[(num >> 6) & 0x3f] +\r\n Base64._LOOKUP[num & 0x3f]);\r\n }\r\n /**\r\n * Encode a chunk.\r\n * @param bytes The byte array.\r\n * @param start The start index in the buffer.\r\n * @param end The end index in the buffer.\r\n * @returns The encoded chunk.\r\n * @internal\r\n */\r\n static encodeChunk(bytes, start, end) {\r\n let tmp;\r\n const output = [];\r\n for (let i = start; i < end; i += 3) {\r\n tmp = ((bytes[i] << 16) & 0xff0000) + ((bytes[i + 1] << 8) & 0xff00) + (bytes[i + 2] & 0xff);\r\n output.push(Base64.tripletToBase64(tmp));\r\n }\r\n return output.join(\"\");\r\n }\r\n}\r\n/**\r\n * Alphabet table for encoding.\r\n * @internal\r\n */\r\nBase64._LOOKUP = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\r\n/**\r\n * Alphabet table for decoding.\r\n * @internal\r\n */\r\nBase64._REVERSE_LOOKUP = {\r\n \"43\": 62,\r\n \"45\": 62,\r\n \"47\": 63,\r\n \"48\": 52,\r\n \"49\": 53,\r\n \"50\": 54,\r\n \"51\": 55,\r\n \"52\": 56,\r\n \"53\": 57,\r\n \"54\": 58,\r\n \"55\": 59,\r\n \"56\": 60,\r\n \"57\": 61,\r\n \"65\": 0,\r\n \"66\": 1,\r\n \"67\": 2,\r\n \"68\": 3,\r\n \"69\": 4,\r\n \"70\": 5,\r\n \"71\": 6,\r\n \"72\": 7,\r\n \"73\": 8,\r\n \"74\": 9,\r\n \"75\": 10,\r\n \"76\": 11,\r\n \"77\": 12,\r\n \"78\": 13,\r\n \"79\": 14,\r\n \"80\": 15,\r\n \"81\": 16,\r\n \"82\": 17,\r\n \"83\": 18,\r\n \"84\": 19,\r\n \"85\": 20,\r\n \"86\": 21,\r\n \"87\": 22,\r\n \"88\": 23,\r\n \"89\": 24,\r\n \"90\": 25,\r\n \"95\": 63,\r\n \"97\": 26,\r\n \"98\": 27,\r\n \"99\": 28,\r\n \"100\": 29,\r\n \"101\": 30,\r\n \"102\": 31,\r\n \"103\": 32,\r\n \"104\": 33,\r\n \"105\": 34,\r\n \"106\": 35,\r\n \"107\": 36,\r\n \"108\": 37,\r\n \"109\": 38,\r\n \"110\": 39,\r\n \"111\": 40,\r\n \"112\": 41,\r\n \"113\": 42,\r\n \"114\": 43,\r\n \"115\": 44,\r\n \"116\": 45,\r\n \"117\": 46,\r\n \"118\": 47,\r\n \"119\": 48,\r\n \"120\": 49,\r\n \"121\": 50,\r\n \"122\": 51\r\n};\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable newline-per-chained-call */\r\n/* eslint-disable no-mixed-operators */\r\nimport bigInt from \"big-integer\";\r\nimport { RandomHelper } from \"./randomHelper.mjs\";\r\n/**\r\n * Helper methods for bigints.\r\n */\r\nexport class BigIntHelper {\r\n /**\r\n * Load 3 bytes from array as bigint.\r\n * @param data The input array.\r\n * @param byteOffset The start index to read from.\r\n * @returns The bigint.\r\n */\r\n static read3(data, byteOffset) {\r\n const v0 = (data[byteOffset + 0] + (data[byteOffset + 1] << 8) + (data[byteOffset + 2] << 16)) >>> 0;\r\n return bigInt(v0);\r\n }\r\n /**\r\n * Load 4 bytes from array as bigint.\r\n * @param data The input array.\r\n * @param byteOffset The start index to read from.\r\n * @returns The bigint.\r\n */\r\n static read4(data, byteOffset) {\r\n const v0 = (data[byteOffset + 0] +\r\n (data[byteOffset + 1] << 8) +\r\n (data[byteOffset + 2] << 16) +\r\n (data[byteOffset + 3] << 24)) >>>\r\n 0;\r\n return bigInt(v0);\r\n }\r\n /**\r\n * Load 8 bytes from array as bigint.\r\n * @param data The data to read from.\r\n * @param byteOffset The start index to read from.\r\n * @returns The bigint.\r\n */\r\n static read8(data, byteOffset) {\r\n const v0 = (data[byteOffset + 0] +\r\n (data[byteOffset + 1] << 8) +\r\n (data[byteOffset + 2] << 16) +\r\n (data[byteOffset + 3] << 24)) >>>\r\n 0;\r\n const v1 = (data[byteOffset + 4] +\r\n (data[byteOffset + 5] << 8) +\r\n (data[byteOffset + 6] << 16) +\r\n (data[byteOffset + 7] << 24)) >>>\r\n 0;\r\n return bigInt(v1).shiftLeft(BigIntHelper.BIG_32).or(v0);\r\n }\r\n /**\r\n * Convert a big int to bytes.\r\n * @param value The bigint.\r\n * @param data The buffer to write into.\r\n * @param byteOffset The start index to write from.\r\n */\r\n static write8(value, data, byteOffset) {\r\n const v0 = Number(value.and(BigIntHelper.BIG_32_MASK));\r\n const v1 = Number(value.shiftRight(BigIntHelper.BIG_32).and(BigIntHelper.BIG_32_MASK));\r\n data[byteOffset] = v0 & 0xff;\r\n data[byteOffset + 1] = (v0 >> 8) & 0xff;\r\n data[byteOffset + 2] = (v0 >> 16) & 0xff;\r\n data[byteOffset + 3] = (v0 >> 24) & 0xff;\r\n data[byteOffset + 4] = v1 & 0xff;\r\n data[byteOffset + 5] = (v1 >> 8) & 0xff;\r\n data[byteOffset + 6] = (v1 >> 16) & 0xff;\r\n data[byteOffset + 7] = (v1 >> 24) & 0xff;\r\n }\r\n /**\r\n * Generate a random bigint.\r\n * @returns The bitint.\r\n */\r\n static random() {\r\n return BigIntHelper.read8(RandomHelper.generate(8), 0);\r\n }\r\n}\r\n// @internal\r\nBigIntHelper.BIG_32 = bigInt(32);\r\n// @internal\r\nBigIntHelper.BIG_32_MASK = bigInt(0xffffffff);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Base64 } from \"../encoding/base64.mjs\";\r\n/**\r\n * Convert arrays to and from different formats.\r\n */\r\nexport class Converter {\r\n /**\r\n * Encode a raw array to UTF8 string.\r\n * @param array The bytes to encode.\r\n * @param startIndex The index to start in the bytes.\r\n * @param length The length of bytes to read.\r\n * @returns The array formated as UTF8.\r\n */\r\n static bytesToUtf8(array, startIndex, length) {\r\n const start = startIndex !== null && startIndex !== void 0 ? startIndex : 0;\r\n const len = length !== null && length !== void 0 ? length : array.length;\r\n let str = \"\";\r\n for (let i = start; i < start + len; i++) {\r\n const value = array[i];\r\n if (value < 0x80) {\r\n str += String.fromCharCode(value);\r\n }\r\n else if (value > 0xbf && value < 0xe0) {\r\n str += String.fromCharCode(((value & 0x1f) << 6) | (array[i + 1] & 0x3f));\r\n i += 1;\r\n }\r\n else if (value > 0xdf && value < 0xf0) {\r\n str += String.fromCharCode(((value & 0x0f) << 12) | ((array[i + 1] & 0x3f) << 6) | (array[i + 2] & 0x3f));\r\n i += 2;\r\n }\r\n else {\r\n // surrogate pair\r\n const charCode = (((value & 0x07) << 18) |\r\n ((array[i + 1] & 0x3f) << 12) |\r\n ((array[i + 2] & 0x3f) << 6) |\r\n (array[i + 3] & 0x3f)) -\r\n 0x010000;\r\n str += String.fromCharCode((charCode >> 10) | 0xd800, (charCode & 0x03ff) | 0xdc00);\r\n i += 3;\r\n }\r\n }\r\n return str;\r\n }\r\n /**\r\n * Convert a UTF8 string to raw array.\r\n * @param utf8 The text to decode.\r\n * @returns The array.\r\n */\r\n static utf8ToBytes(utf8) {\r\n const bytes = [];\r\n for (let i = 0; i < utf8.length; i++) {\r\n let charcode = utf8.charCodeAt(i);\r\n if (charcode < 0x80) {\r\n bytes.push(charcode);\r\n }\r\n else if (charcode < 0x800) {\r\n bytes.push(0xc0 | (charcode >> 6), 0x80 | (charcode & 0x3f));\r\n }\r\n else if (charcode < 0xd800 || charcode >= 0xe000) {\r\n bytes.push(0xe0 | (charcode >> 12), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\r\n }\r\n else {\r\n // surrogate pair\r\n i++;\r\n // UTF-16 encodes 0x10000-0x10FFFF by\r\n // subtracting 0x10000 and splitting the\r\n // 20 bits of 0x0-0xFFFFF into two halves\r\n charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (utf8.charCodeAt(i) & 0x3ff));\r\n bytes.push(0xf0 | (charcode >> 18), 0x80 | ((charcode >> 12) & 0x3f), 0x80 | ((charcode >> 6) & 0x3f), 0x80 | (charcode & 0x3f));\r\n }\r\n }\r\n return Uint8Array.from(bytes);\r\n }\r\n /**\r\n * Encode a raw array to hex string.\r\n * @param array The bytes to encode.\r\n * @param startIndex The index to start in the bytes.\r\n * @param length The length of bytes to read.\r\n * @param reverse Reverse the combine direction.\r\n * @returns The array formated as hex.\r\n */\r\n static bytesToHex(array, startIndex, length, reverse) {\r\n let hex = \"\";\r\n this.buildHexLookups();\r\n if (Converter.ENCODE_LOOKUP) {\r\n const len = length !== null && length !== void 0 ? length : array.length;\r\n const start = startIndex !== null && startIndex !== void 0 ? startIndex : 0;\r\n if (reverse) {\r\n for (let i = 0; i < len; i++) {\r\n hex = Converter.ENCODE_LOOKUP[array[start + i]] + hex;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < len; i++) {\r\n hex += Converter.ENCODE_LOOKUP[array[start + i]];\r\n }\r\n }\r\n }\r\n return hex;\r\n }\r\n /**\r\n * Decode a hex string to raw array.\r\n * @param hex The hex to decode.\r\n * @param reverse Store the characters in reverse.\r\n * @returns The array.\r\n */\r\n static hexToBytes(hex, reverse) {\r\n const sizeof = hex.length >> 1;\r\n const length = sizeof << 1;\r\n const array = new Uint8Array(sizeof);\r\n this.buildHexLookups();\r\n if (Converter.DECODE_LOOKUP) {\r\n let i = 0;\r\n let n = 0;\r\n while (i < length) {\r\n array[n++] =\r\n (Converter.DECODE_LOOKUP[hex.charCodeAt(i++)] << 4) | Converter.DECODE_LOOKUP[hex.charCodeAt(i++)];\r\n }\r\n if (reverse) {\r\n array.reverse();\r\n }\r\n }\r\n return array;\r\n }\r\n /**\r\n * Convert the UTF8 to hex.\r\n * @param utf8 The text to convert.\r\n * @returns The hex version of the bytes.\r\n */\r\n static utf8ToHex(utf8) {\r\n return Converter.bytesToHex(Converter.utf8ToBytes(utf8));\r\n }\r\n /**\r\n * Convert the hex text to text.\r\n * @param hex The hex to convert.\r\n * @returns The UTF8 version of the bytes.\r\n */\r\n static hexToUtf8(hex) {\r\n return Converter.bytesToUtf8(Converter.hexToBytes(hex));\r\n }\r\n /**\r\n * Is the data hex format.\r\n * @param value The value to test.\r\n * @returns True if the string is hex.\r\n */\r\n static isHex(value) {\r\n if (value.length % 2 === 1) {\r\n return false;\r\n }\r\n return /^[\\da-f]+$/g.test(value);\r\n }\r\n /**\r\n * Convert bytes to binary string.\r\n * @param bytes The bytes to convert.\r\n * @returns A binary string of the bytes.\r\n */\r\n static bytesToBinary(bytes) {\r\n const b = [];\r\n for (let i = 0; i < bytes.length; i++) {\r\n b.push(bytes[i].toString(2).padStart(8, \"0\"));\r\n }\r\n return b.join(\"\");\r\n }\r\n /**\r\n * Convert a binary string to bytes.\r\n * @param binary The binary string.\r\n * @returns The bytes.\r\n */\r\n static binaryToBytes(binary) {\r\n const bytes = new Uint8Array(Math.ceil(binary.length / 8));\r\n for (let i = 0; i < bytes.length; i++) {\r\n bytes[i] = Number.parseInt(binary.slice(i * 8, (i + 1) * 8), 2);\r\n }\r\n return bytes;\r\n }\r\n /**\r\n * Convert bytes to base64 string.\r\n * @param bytes The bytes to convert.\r\n * @returns A base64 string of the bytes.\r\n */\r\n static bytesToBase64(bytes) {\r\n return Base64.encode(bytes);\r\n }\r\n /**\r\n * Convert a base64 string to bytes.\r\n * @param base64 The base64 string.\r\n * @returns The bytes.\r\n */\r\n static base64ToBytes(base64) {\r\n return Base64.decode(base64);\r\n }\r\n /**\r\n * Build the static lookup tables.\r\n * @internal\r\n */\r\n static buildHexLookups() {\r\n if (!Converter.ENCODE_LOOKUP || !Converter.DECODE_LOOKUP) {\r\n const alphabet = \"0123456789abcdef\";\r\n Converter.ENCODE_LOOKUP = [];\r\n Converter.DECODE_LOOKUP = [];\r\n for (let i = 0; i < 256; i++) {\r\n Converter.ENCODE_LOOKUP[i] = alphabet[(i >> 4) & 0xf] + alphabet[i & 0xf];\r\n if (i < 16) {\r\n if (i < 10) {\r\n Converter.DECODE_LOOKUP[0x30 + i] = i;\r\n }\r\n else {\r\n Converter.DECODE_LOOKUP[0x61 - 10 + i] = i;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","import { BigIntHelper } from \"./bigIntHelper.mjs\";\r\nimport { Converter } from \"./converter.mjs\";\r\n/**\r\n * Keep track of the write index within a stream.\r\n */\r\nexport class WriteStream {\r\n /**\r\n * Create a new instance of ReadStream.\r\n */\r\n constructor() {\r\n this._storage = new Uint8Array(WriteStream.CHUNK_SIZE);\r\n this._writeIndex = 0;\r\n }\r\n /**\r\n * Get the length of the stream.\r\n * @returns The stream length.\r\n */\r\n length() {\r\n return this._storage.length;\r\n }\r\n /**\r\n * How much unused data is there.\r\n * @returns The amount of unused data.\r\n */\r\n unused() {\r\n return this._storage.length - this._writeIndex;\r\n }\r\n /**\r\n * Get the final stream as bytes.\r\n * @returns The final stream.\r\n */\r\n finalBytes() {\r\n return this._storage.subarray(0, this._writeIndex);\r\n }\r\n /**\r\n * Get the final stream as hex.\r\n * @returns The final stream as hex.\r\n */\r\n finalHex() {\r\n return Converter.bytesToHex(this._storage.subarray(0, this._writeIndex));\r\n }\r\n /**\r\n * Get the current write index.\r\n * @returns The current write index.\r\n */\r\n getWriteIndex() {\r\n return this._writeIndex;\r\n }\r\n /**\r\n * Set the current write index.\r\n * @param writeIndex The current write index.\r\n */\r\n setWriteIndex(writeIndex) {\r\n this._writeIndex = writeIndex;\r\n if (writeIndex >= this._storage.length) {\r\n throw new Error(`You cannot set the writeIndex to ${writeIndex} as the stream is only ${this._storage.length} in length`);\r\n }\r\n }\r\n /**\r\n * Write fixed length stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param length The length of the data to write.\r\n * @param val The data to write.\r\n */\r\n writeFixedHex(name, length, val) {\r\n if (!Converter.isHex(val)) {\r\n throw new Error(`The ${name} should be in hex format`);\r\n }\r\n // Hex should be twice the length as each byte is 2 characters\r\n if (length * 2 !== val.length) {\r\n throw new Error(`${name} length ${val.length} does not match expected length ${length * 2}`);\r\n }\r\n this.expand(length);\r\n this._storage.set(Converter.hexToBytes(val), this._writeIndex);\r\n this._writeIndex += length;\r\n }\r\n /**\r\n * Write fixed length stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param length The length of the data to write.\r\n * @param val The data to write.\r\n */\r\n writeBytes(name, length, val) {\r\n this.expand(length);\r\n this._storage.set(val, this._writeIndex);\r\n this._writeIndex += length;\r\n }\r\n /**\r\n * Write a byte to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeByte(name, val) {\r\n this.expand(1);\r\n this._storage[this._writeIndex++] = val & 0xff;\r\n }\r\n /**\r\n * Write a UInt16 to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeUInt16(name, val) {\r\n this.expand(2);\r\n this._storage[this._writeIndex++] = val & 0xff;\r\n this._storage[this._writeIndex++] = val >>> 8;\r\n }\r\n /**\r\n * Write a UInt32 to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeUInt32(name, val) {\r\n this.expand(4);\r\n this._storage[this._writeIndex++] = val & 0xff;\r\n this._storage[this._writeIndex++] = val >>> 8;\r\n this._storage[this._writeIndex++] = val >>> 16;\r\n this._storage[this._writeIndex++] = val >>> 24;\r\n }\r\n /**\r\n * Write a UInt64 to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeUInt64(name, val) {\r\n this.expand(8);\r\n BigIntHelper.write8(val, this._storage, this._writeIndex);\r\n this._writeIndex += 8;\r\n }\r\n /**\r\n * Write a boolean to the stream.\r\n * @param name The name of the data we are trying to write.\r\n * @param val The data to write.\r\n */\r\n writeBoolean(name, val) {\r\n this.expand(1);\r\n this._storage[this._writeIndex++] = val ? 1 : 0;\r\n }\r\n /**\r\n * Expand the storage if there is not enough spave.\r\n * @param additional The amount of space needed.\r\n */\r\n expand(additional) {\r\n if (this._writeIndex + additional > this._storage.byteLength) {\r\n const newArr = new Uint8Array(this._storage.length + Math.ceil(additional / WriteStream.CHUNK_SIZE) * WriteStream.CHUNK_SIZE);\r\n newArr.set(this._storage, 0);\r\n this._storage = newArr;\r\n }\r\n }\r\n}\r\n/**\r\n * Chunk size to expand the storage.\r\n * @internal\r\n */\r\nWriteStream.CHUNK_SIZE = 4096;\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Sha256 } from \"../hashes/sha256.mjs\";\r\n/**\r\n * Class to help with HmacSha256 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha256.\r\n */\r\nexport class HmacSha256 {\r\n /**\r\n * Create a new instance of HmacSha256.\r\n * @param key The key for the hmac.\r\n * @param bits The number of bits.\r\n */\r\n constructor(key, bits = 256) {\r\n this._bits = bits;\r\n this._sha256 = new Sha256(bits);\r\n if (key.length > 64) {\r\n // eslint-disable-next-line newline-per-chained-call\r\n key = new Sha256(bits).update(key).digest();\r\n }\r\n this._oKeyPad = new Uint8Array(64);\r\n const iKeyPad = new Uint8Array(64);\r\n for (let i = 0; i < 64; ++i) {\r\n const b = key[i] || 0;\r\n this._oKeyPad[i] = 0x5c ^ b;\r\n iKeyPad[i] = 0x36 ^ b;\r\n }\r\n this._sha256.update(iKeyPad);\r\n }\r\n /**\r\n * Perform Sum 256 on the data.\r\n * @param key The key for the hmac.\r\n * @param data The data to operate on.\r\n * @returns The sum 256 of the data.\r\n */\r\n static sum256(key, data) {\r\n const b2b = new HmacSha256(key, 256);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n this._sha256.update(message);\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n const innerHash = this._sha256.digest();\r\n const finalSha256 = new Sha256(this._bits);\r\n finalSha256.update(this._oKeyPad);\r\n finalSha256.update(innerHash);\r\n return finalSha256.digest();\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Sha512 } from \"../hashes/sha512.mjs\";\r\n/**\r\n * Class to help with HmacSha512 scheme.\r\n * TypeScript conversion from https://github.com/emn178/js-sha512.\r\n */\r\nexport class HmacSha512 {\r\n /**\r\n * Create a new instance of HmacSha512.\r\n * @param key The key for the hmac.\r\n * @param bits The number of bits.\r\n */\r\n constructor(key, bits = 512) {\r\n this._bits = bits;\r\n this._sha512 = new Sha512(bits);\r\n if (key.length > 128) {\r\n // eslint-disable-next-line newline-per-chained-call\r\n key = new Sha512(bits).update(key).digest();\r\n }\r\n this._oKeyPad = new Uint8Array(128);\r\n const iKeyPad = new Uint8Array(128);\r\n for (let i = 0; i < 128; ++i) {\r\n const b = key[i] || 0;\r\n this._oKeyPad[i] = 0x5c ^ b;\r\n iKeyPad[i] = 0x36 ^ b;\r\n }\r\n this._sha512.update(iKeyPad);\r\n }\r\n /**\r\n * Perform Sum 512 on the data.\r\n * @param key The key for the hmac.\r\n * @param data The data to operate on.\r\n * @returns The sum 512 of the data.\r\n */\r\n static sum512(key, data) {\r\n const b2b = new HmacSha512(key, 512);\r\n b2b.update(data);\r\n return b2b.digest();\r\n }\r\n /**\r\n * Update the hash with the data.\r\n * @param message The data to update the hash with.\r\n * @returns The instance for chaining.\r\n */\r\n update(message) {\r\n this._sha512.update(message);\r\n return this;\r\n }\r\n /**\r\n * Get the digest.\r\n * @returns The digest.\r\n */\r\n digest() {\r\n const innerHash = this._sha512.digest();\r\n const finalSha512 = new Sha512(this._bits);\r\n finalSha512.update(this._oKeyPad);\r\n finalSha512.update(innerHash);\r\n return finalSha512.digest();\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable unicorn/prefer-math-trunc */\r\nimport { HmacSha256 } from \"../macs/hmacSha256.mjs\";\r\nimport { HmacSha512 } from \"../macs/hmacSha512.mjs\";\r\n/**\r\n * Implementation of the password based key derivation function 2.\r\n */\r\nexport class Pbkdf2 {\r\n /**\r\n * Derive a key from the parameters using Sha256.\r\n * @param password The password to derive the key from.\r\n * @param salt The salt for the derivation.\r\n * @param iterations Numer of iterations to perform.\r\n * @param keyLength The length of the key to derive.\r\n * @returns The derived key.\r\n */\r\n static sha256(password, salt, iterations, keyLength) {\r\n return Pbkdf2.deriveKey(password, salt, iterations, keyLength, 32, (pass, block) => HmacSha256.sum256(pass, block));\r\n }\r\n /**\r\n * Derive a key from the parameters using Sha512.\r\n * @param password The password to derive the key from.\r\n * @param salt The salt for the derivation.\r\n * @param iterations Numer of iterations to perform.\r\n * @param keyLength The length of the key to derive.\r\n * @returns The derived key.\r\n */\r\n static sha512(password, salt, iterations, keyLength) {\r\n return Pbkdf2.deriveKey(password, salt, iterations, keyLength, 64, (pass, block) => HmacSha512.sum512(pass, block));\r\n }\r\n /**\r\n * Derive a key from the parameters.\r\n * @param password The password to derive the key from.\r\n * @param salt The salt for the derivation.\r\n * @param iterations Numer of iterations to perform.\r\n * @param keyLength The length of the key to derive.\r\n * @param macLength The length of the mac key.\r\n * @param sumFunc The mac function.\r\n * @returns The derived key.\r\n * @internal\r\n */\r\n static deriveKey(password, salt, iterations, keyLength, macLength, sumFunc) {\r\n if (iterations < 1) {\r\n throw new Error(\"Iterations must be > 0\");\r\n }\r\n if (keyLength > (Math.pow(2, 32) - 1) * macLength) {\r\n throw new Error(\"Requested key length is too long\");\r\n }\r\n const DK = new Uint8Array(keyLength);\r\n let T = new Uint8Array(macLength);\r\n const block1 = new Uint8Array(salt.length + 4);\r\n const l = Math.ceil(keyLength / macLength);\r\n const r = (keyLength - (l - 1)) * macLength;\r\n block1.set(salt, 0);\r\n for (let i = 1; i <= l; i++) {\r\n block1[salt.length + 0] = (i >> 24) & 0xff;\r\n block1[salt.length + 1] = (i >> 16) & 0xff;\r\n block1[salt.length + 2] = (i >> 8) & 0xff;\r\n block1[salt.length + 3] = (i >> 0) & 0xff;\r\n let U = sumFunc(password, block1);\r\n T = U.slice(0, macLength);\r\n for (let j = 1; j < iterations; j++) {\r\n U = sumFunc(password, U);\r\n for (let k = 0; k < macLength; k++) {\r\n T[k] ^= U[k];\r\n }\r\n }\r\n const destPos = (i - 1) * macLength;\r\n const len = i === l ? r : macLength;\r\n for (let j = 0; j < len; j++) {\r\n DK[destPos + j] = T[j];\r\n }\r\n }\r\n return DK;\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nexport const english = [\r\n \"abandon\",\r\n \"ability\",\r\n \"able\",\r\n \"about\",\r\n \"above\",\r\n \"absent\",\r\n \"absorb\",\r\n \"abstract\",\r\n \"absurd\",\r\n \"abuse\",\r\n \"access\",\r\n \"accident\",\r\n \"account\",\r\n \"accuse\",\r\n \"achieve\",\r\n \"acid\",\r\n \"acoustic\",\r\n \"acquire\",\r\n \"across\",\r\n \"act\",\r\n \"action\",\r\n \"actor\",\r\n \"actress\",\r\n \"actual\",\r\n \"adapt\",\r\n \"add\",\r\n \"addict\",\r\n \"address\",\r\n \"adjust\",\r\n \"admit\",\r\n \"adult\",\r\n \"advance\",\r\n \"advice\",\r\n \"aerobic\",\r\n \"affair\",\r\n \"afford\",\r\n \"afraid\",\r\n \"again\",\r\n \"age\",\r\n \"agent\",\r\n \"agree\",\r\n \"ahead\",\r\n \"aim\",\r\n \"air\",\r\n \"airport\",\r\n \"aisle\",\r\n \"alarm\",\r\n \"album\",\r\n \"alcohol\",\r\n \"alert\",\r\n \"alien\",\r\n \"all\",\r\n \"alley\",\r\n \"allow\",\r\n \"almost\",\r\n \"alone\",\r\n \"alpha\",\r\n \"already\",\r\n \"also\",\r\n \"alter\",\r\n \"always\",\r\n \"amateur\",\r\n \"amazing\",\r\n \"among\",\r\n \"amount\",\r\n \"amused\",\r\n \"analyst\",\r\n \"anchor\",\r\n \"ancient\",\r\n \"anger\",\r\n \"angle\",\r\n \"angry\",\r\n \"animal\",\r\n \"ankle\",\r\n \"announce\",\r\n \"annual\",\r\n \"another\",\r\n \"answer\",\r\n \"antenna\",\r\n \"antique\",\r\n \"anxiety\",\r\n \"any\",\r\n \"apart\",\r\n \"apology\",\r\n \"appear\",\r\n \"apple\",\r\n \"approve\",\r\n \"april\",\r\n \"arch\",\r\n \"arctic\",\r\n \"area\",\r\n \"arena\",\r\n \"argue\",\r\n \"arm\",\r\n \"armed\",\r\n \"armor\",\r\n \"army\",\r\n \"around\",\r\n \"arrange\",\r\n \"arrest\",\r\n \"arrive\",\r\n \"arrow\",\r\n \"art\",\r\n \"artefact\",\r\n \"artist\",\r\n \"artwork\",\r\n \"ask\",\r\n \"aspect\",\r\n \"assault\",\r\n \"asset\",\r\n \"assist\",\r\n \"assume\",\r\n \"asthma\",\r\n \"athlete\",\r\n \"atom\",\r\n \"attack\",\r\n \"attend\",\r\n \"attitude\",\r\n \"attract\",\r\n \"auction\",\r\n \"audit\",\r\n \"august\",\r\n \"aunt\",\r\n \"author\",\r\n \"auto\",\r\n \"autumn\",\r\n \"average\",\r\n \"avocado\",\r\n \"avoid\",\r\n \"awake\",\r\n \"aware\",\r\n \"away\",\r\n \"awesome\",\r\n \"awful\",\r\n \"awkward\",\r\n \"axis\",\r\n \"baby\",\r\n \"bachelor\",\r\n \"bacon\",\r\n \"badge\",\r\n \"bag\",\r\n \"balance\",\r\n \"balcony\",\r\n \"ball\",\r\n \"bamboo\",\r\n \"banana\",\r\n \"banner\",\r\n \"bar\",\r\n \"barely\",\r\n \"bargain\",\r\n \"barrel\",\r\n \"base\",\r\n \"basic\",\r\n \"basket\",\r\n \"battle\",\r\n \"beach\",\r\n \"bean\",\r\n \"beauty\",\r\n \"because\",\r\n \"become\",\r\n \"beef\",\r\n \"before\",\r\n \"begin\",\r\n \"behave\",\r\n \"behind\",\r\n \"believe\",\r\n \"below\",\r\n \"belt\",\r\n \"bench\",\r\n \"benefit\",\r\n \"best\",\r\n \"betray\",\r\n \"better\",\r\n \"between\",\r\n \"beyond\",\r\n \"bicycle\",\r\n \"bid\",\r\n \"bike\",\r\n \"bind\",\r\n \"biology\",\r\n \"bird\",\r\n \"birth\",\r\n \"bitter\",\r\n \"black\",\r\n \"blade\",\r\n \"blame\",\r\n \"blanket\",\r\n \"blast\",\r\n \"bleak\",\r\n \"bless\",\r\n \"blind\",\r\n \"blood\",\r\n \"blossom\",\r\n \"blouse\",\r\n \"blue\",\r\n \"blur\",\r\n \"blush\",\r\n \"board\",\r\n \"boat\",\r\n \"body\",\r\n \"boil\",\r\n \"bomb\",\r\n \"bone\",\r\n \"bonus\",\r\n \"book\",\r\n \"boost\",\r\n \"border\",\r\n \"boring\",\r\n \"borrow\",\r\n \"boss\",\r\n \"bottom\",\r\n \"bounce\",\r\n \"box\",\r\n \"boy\",\r\n \"bracket\",\r\n \"brain\",\r\n \"brand\",\r\n \"brass\",\r\n \"brave\",\r\n \"bread\",\r\n \"breeze\",\r\n \"brick\",\r\n \"bridge\",\r\n \"brief\",\r\n \"bright\",\r\n \"bring\",\r\n \"brisk\",\r\n \"broccoli\",\r\n \"broken\",\r\n \"bronze\",\r\n \"broom\",\r\n \"brother\",\r\n \"brown\",\r\n \"brush\",\r\n \"bubble\",\r\n \"buddy\",\r\n \"budget\",\r\n \"buffalo\",\r\n \"build\",\r\n \"bulb\",\r\n \"bulk\",\r\n \"bullet\",\r\n \"bundle\",\r\n \"bunker\",\r\n \"burden\",\r\n \"burger\",\r\n \"burst\",\r\n \"bus\",\r\n \"business\",\r\n \"busy\",\r\n \"butter\",\r\n \"buyer\",\r\n \"buzz\",\r\n \"cabbage\",\r\n \"cabin\",\r\n \"cable\",\r\n \"cactus\",\r\n \"cage\",\r\n \"cake\",\r\n \"call\",\r\n \"calm\",\r\n \"camera\",\r\n \"camp\",\r\n \"can\",\r\n \"canal\",\r\n \"cancel\",\r\n \"candy\",\r\n \"cannon\",\r\n \"canoe\",\r\n \"canvas\",\r\n \"canyon\",\r\n \"capable\",\r\n \"capital\",\r\n \"captain\",\r\n \"car\",\r\n \"carbon\",\r\n \"card\",\r\n \"cargo\",\r\n \"carpet\",\r\n \"carry\",\r\n \"cart\",\r\n \"case\",\r\n \"cash\",\r\n \"casino\",\r\n \"castle\",\r\n \"casual\",\r\n \"cat\",\r\n \"catalog\",\r\n \"catch\",\r\n \"category\",\r\n \"cattle\",\r\n \"caught\",\r\n \"cause\",\r\n \"caution\",\r\n \"cave\",\r\n \"ceiling\",\r\n \"celery\",\r\n \"cement\",\r\n \"census\",\r\n \"century\",\r\n \"cereal\",\r\n \"certain\",\r\n \"chair\",\r\n \"chalk\",\r\n \"champion\",\r\n \"change\",\r\n \"chaos\",\r\n \"chapter\",\r\n \"charge\",\r\n \"chase\",\r\n \"chat\",\r\n \"cheap\",\r\n \"check\",\r\n \"cheese\",\r\n \"chef\",\r\n \"cherry\",\r\n \"chest\",\r\n \"chicken\",\r\n \"chief\",\r\n \"child\",\r\n \"chimney\",\r\n \"choice\",\r\n \"choose\",\r\n \"chronic\",\r\n \"chuckle\",\r\n \"chunk\",\r\n \"churn\",\r\n \"cigar\",\r\n \"cinnamon\",\r\n \"circle\",\r\n \"citizen\",\r\n \"city\",\r\n \"civil\",\r\n \"claim\",\r\n \"clap\",\r\n \"clarify\",\r\n \"claw\",\r\n \"clay\",\r\n \"clean\",\r\n \"clerk\",\r\n \"clever\",\r\n \"click\",\r\n \"client\",\r\n \"cliff\",\r\n \"climb\",\r\n \"clinic\",\r\n \"clip\",\r\n \"clock\",\r\n \"clog\",\r\n \"close\",\r\n \"cloth\",\r\n \"cloud\",\r\n \"clown\",\r\n \"club\",\r\n \"clump\",\r\n \"cluster\",\r\n \"clutch\",\r\n \"coach\",\r\n \"coast\",\r\n \"coconut\",\r\n \"code\",\r\n \"coffee\",\r\n \"coil\",\r\n \"coin\",\r\n \"collect\",\r\n \"color\",\r\n \"column\",\r\n \"combine\",\r\n \"come\",\r\n \"comfort\",\r\n \"comic\",\r\n \"common\",\r\n \"company\",\r\n \"concert\",\r\n \"conduct\",\r\n \"confirm\",\r\n \"congress\",\r\n \"connect\",\r\n \"consider\",\r\n \"control\",\r\n \"convince\",\r\n \"cook\",\r\n \"cool\",\r\n \"copper\",\r\n \"copy\",\r\n \"coral\",\r\n \"core\",\r\n \"corn\",\r\n \"correct\",\r\n \"cost\",\r\n \"cotton\",\r\n \"couch\",\r\n \"country\",\r\n \"couple\",\r\n \"course\",\r\n \"cousin\",\r\n \"cover\",\r\n \"coyote\",\r\n \"crack\",\r\n \"cradle\",\r\n \"craft\",\r\n \"cram\",\r\n \"crane\",\r\n \"crash\",\r\n \"crater\",\r\n \"crawl\",\r\n \"crazy\",\r\n \"cream\",\r\n \"credit\",\r\n \"creek\",\r\n \"crew\",\r\n \"cricket\",\r\n \"crime\",\r\n \"crisp\",\r\n \"critic\",\r\n \"crop\",\r\n \"cross\",\r\n \"crouch\",\r\n \"crowd\",\r\n \"crucial\",\r\n \"cruel\",\r\n \"cruise\",\r\n \"crumble\",\r\n \"crunch\",\r\n \"crush\",\r\n \"cry\",\r\n \"crystal\",\r\n \"cube\",\r\n \"culture\",\r\n \"cup\",\r\n \"cupboard\",\r\n \"curious\",\r\n \"current\",\r\n \"curtain\",\r\n \"curve\",\r\n \"cushion\",\r\n \"custom\",\r\n \"cute\",\r\n \"cycle\",\r\n \"dad\",\r\n \"damage\",\r\n \"damp\",\r\n \"dance\",\r\n \"danger\",\r\n \"daring\",\r\n \"dash\",\r\n \"daughter\",\r\n \"dawn\",\r\n \"day\",\r\n \"deal\",\r\n \"debate\",\r\n \"debris\",\r\n \"decade\",\r\n \"december\",\r\n \"decide\",\r\n \"decline\",\r\n \"decorate\",\r\n \"decrease\",\r\n \"deer\",\r\n \"defense\",\r\n \"define\",\r\n \"defy\",\r\n \"degree\",\r\n \"delay\",\r\n \"deliver\",\r\n \"demand\",\r\n \"demise\",\r\n \"denial\",\r\n \"dentist\",\r\n \"deny\",\r\n \"depart\",\r\n \"depend\",\r\n \"deposit\",\r\n \"depth\",\r\n \"deputy\",\r\n \"derive\",\r\n \"describe\",\r\n \"desert\",\r\n \"design\",\r\n \"desk\",\r\n \"despair\",\r\n \"destroy\",\r\n \"detail\",\r\n \"detect\",\r\n \"develop\",\r\n \"device\",\r\n \"devote\",\r\n \"diagram\",\r\n \"dial\",\r\n \"diamond\",\r\n \"diary\",\r\n \"dice\",\r\n \"diesel\",\r\n \"diet\",\r\n \"differ\",\r\n \"digital\",\r\n \"dignity\",\r\n \"dilemma\",\r\n \"dinner\",\r\n \"dinosaur\",\r\n \"direct\",\r\n \"dirt\",\r\n \"disagree\",\r\n \"discover\",\r\n \"disease\",\r\n \"dish\",\r\n \"dismiss\",\r\n \"disorder\",\r\n \"display\",\r\n \"distance\",\r\n \"divert\",\r\n \"divide\",\r\n \"divorce\",\r\n \"dizzy\",\r\n \"doctor\",\r\n \"document\",\r\n \"dog\",\r\n \"doll\",\r\n \"dolphin\",\r\n \"domain\",\r\n \"donate\",\r\n \"donkey\",\r\n \"donor\",\r\n \"door\",\r\n \"dose\",\r\n \"double\",\r\n \"dove\",\r\n \"draft\",\r\n \"dragon\",\r\n \"drama\",\r\n \"drastic\",\r\n \"draw\",\r\n \"dream\",\r\n \"dress\",\r\n \"drift\",\r\n \"drill\",\r\n \"drink\",\r\n \"drip\",\r\n \"drive\",\r\n \"drop\",\r\n \"drum\",\r\n \"dry\",\r\n \"duck\",\r\n \"dumb\",\r\n \"dune\",\r\n \"during\",\r\n \"dust\",\r\n \"dutch\",\r\n \"duty\",\r\n \"dwarf\",\r\n \"dynamic\",\r\n \"eager\",\r\n \"eagle\",\r\n \"early\",\r\n \"earn\",\r\n \"earth\",\r\n \"easily\",\r\n \"east\",\r\n \"easy\",\r\n \"echo\",\r\n \"ecology\",\r\n \"economy\",\r\n \"edge\",\r\n \"edit\",\r\n \"educate\",\r\n \"effort\",\r\n \"egg\",\r\n \"eight\",\r\n \"either\",\r\n \"elbow\",\r\n \"elder\",\r\n \"electric\",\r\n \"elegant\",\r\n \"element\",\r\n \"elephant\",\r\n \"elevator\",\r\n \"elite\",\r\n \"else\",\r\n \"embark\",\r\n \"embody\",\r\n \"embrace\",\r\n \"emerge\",\r\n \"emotion\",\r\n \"employ\",\r\n \"empower\",\r\n \"empty\",\r\n \"enable\",\r\n \"enact\",\r\n \"end\",\r\n \"endless\",\r\n \"endorse\",\r\n \"enemy\",\r\n \"energy\",\r\n \"enforce\",\r\n \"engage\",\r\n \"engine\",\r\n \"enhance\",\r\n \"enjoy\",\r\n \"enlist\",\r\n \"enough\",\r\n \"enrich\",\r\n \"enroll\",\r\n \"ensure\",\r\n \"enter\",\r\n \"entire\",\r\n \"entry\",\r\n \"envelope\",\r\n \"episode\",\r\n \"equal\",\r\n \"equip\",\r\n \"era\",\r\n \"erase\",\r\n \"erode\",\r\n \"erosion\",\r\n \"error\",\r\n \"erupt\",\r\n \"escape\",\r\n \"essay\",\r\n \"essence\",\r\n \"estate\",\r\n \"eternal\",\r\n \"ethics\",\r\n \"evidence\",\r\n \"evil\",\r\n \"evoke\",\r\n \"evolve\",\r\n \"exact\",\r\n \"example\",\r\n \"excess\",\r\n \"exchange\",\r\n \"excite\",\r\n \"exclude\",\r\n \"excuse\",\r\n \"execute\",\r\n \"exercise\",\r\n \"exhaust\",\r\n \"exhibit\",\r\n \"exile\",\r\n \"exist\",\r\n \"exit\",\r\n \"exotic\",\r\n \"expand\",\r\n \"expect\",\r\n \"expire\",\r\n \"explain\",\r\n \"expose\",\r\n \"express\",\r\n \"extend\",\r\n \"extra\",\r\n \"eye\",\r\n \"eyebrow\",\r\n \"fabric\",\r\n \"face\",\r\n \"faculty\",\r\n \"fade\",\r\n \"faint\",\r\n \"faith\",\r\n \"fall\",\r\n \"false\",\r\n \"fame\",\r\n \"family\",\r\n \"famous\",\r\n \"fan\",\r\n \"fancy\",\r\n \"fantasy\",\r\n \"farm\",\r\n \"fashion\",\r\n \"fat\",\r\n \"fatal\",\r\n \"father\",\r\n \"fatigue\",\r\n \"fault\",\r\n \"favorite\",\r\n \"feature\",\r\n \"february\",\r\n \"federal\",\r\n \"fee\",\r\n \"feed\",\r\n \"feel\",\r\n \"female\",\r\n \"fence\",\r\n \"festival\",\r\n \"fetch\",\r\n \"fever\",\r\n \"few\",\r\n \"fiber\",\r\n \"fiction\",\r\n \"field\",\r\n \"figure\",\r\n \"file\",\r\n \"film\",\r\n \"filter\",\r\n \"final\",\r\n \"find\",\r\n \"fine\",\r\n \"finger\",\r\n \"finish\",\r\n \"fire\",\r\n \"firm\",\r\n \"first\",\r\n \"fiscal\",\r\n \"fish\",\r\n \"fit\",\r\n \"fitness\",\r\n \"fix\",\r\n \"flag\",\r\n \"flame\",\r\n \"flash\",\r\n \"flat\",\r\n \"flavor\",\r\n \"flee\",\r\n \"flight\",\r\n \"flip\",\r\n \"float\",\r\n \"flock\",\r\n \"floor\",\r\n \"flower\",\r\n \"fluid\",\r\n \"flush\",\r\n \"fly\",\r\n \"foam\",\r\n \"focus\",\r\n \"fog\",\r\n \"foil\",\r\n \"fold\",\r\n \"follow\",\r\n \"food\",\r\n \"foot\",\r\n \"force\",\r\n \"forest\",\r\n \"forget\",\r\n \"fork\",\r\n \"fortune\",\r\n \"forum\",\r\n \"forward\",\r\n \"fossil\",\r\n \"foster\",\r\n \"found\",\r\n \"fox\",\r\n \"fragile\",\r\n \"frame\",\r\n \"frequent\",\r\n \"fresh\",\r\n \"friend\",\r\n \"fringe\",\r\n \"frog\",\r\n \"front\",\r\n \"frost\",\r\n \"frown\",\r\n \"frozen\",\r\n \"fruit\",\r\n \"fuel\",\r\n \"fun\",\r\n \"funny\",\r\n \"furnace\",\r\n \"fury\",\r\n \"future\",\r\n \"gadget\",\r\n \"gain\",\r\n \"galaxy\",\r\n \"gallery\",\r\n \"game\",\r\n \"gap\",\r\n \"garage\",\r\n \"garbage\",\r\n \"garden\",\r\n \"garlic\",\r\n \"garment\",\r\n \"gas\",\r\n \"gasp\",\r\n \"gate\",\r\n \"gather\",\r\n \"gauge\",\r\n \"gaze\",\r\n \"general\",\r\n \"genius\",\r\n \"genre\",\r\n \"gentle\",\r\n \"genuine\",\r\n \"gesture\",\r\n \"ghost\",\r\n \"giant\",\r\n \"gift\",\r\n \"giggle\",\r\n \"ginger\",\r\n \"giraffe\",\r\n \"girl\",\r\n \"give\",\r\n \"glad\",\r\n \"glance\",\r\n \"glare\",\r\n \"glass\",\r\n \"glide\",\r\n \"glimpse\",\r\n \"globe\",\r\n \"gloom\",\r\n \"glory\",\r\n \"glove\",\r\n \"glow\",\r\n \"glue\",\r\n \"goat\",\r\n \"goddess\",\r\n \"gold\",\r\n \"good\",\r\n \"goose\",\r\n \"gorilla\",\r\n \"gospel\",\r\n \"gossip\",\r\n \"govern\",\r\n \"gown\",\r\n \"grab\",\r\n \"grace\",\r\n \"grain\",\r\n \"grant\",\r\n \"grape\",\r\n \"grass\",\r\n \"gravity\",\r\n \"great\",\r\n \"green\",\r\n \"grid\",\r\n \"grief\",\r\n \"grit\",\r\n \"grocery\",\r\n \"group\",\r\n \"grow\",\r\n \"grunt\",\r\n \"guard\",\r\n \"guess\",\r\n \"guide\",\r\n \"guilt\",\r\n \"guitar\",\r\n \"gun\",\r\n \"gym\",\r\n \"habit\",\r\n \"hair\",\r\n \"half\",\r\n \"hammer\",\r\n \"hamster\",\r\n \"hand\",\r\n \"happy\",\r\n \"harbor\",\r\n \"hard\",\r\n \"harsh\",\r\n \"harvest\",\r\n \"hat\",\r\n \"have\",\r\n \"hawk\",\r\n \"hazard\",\r\n \"head\",\r\n \"health\",\r\n \"heart\",\r\n \"heavy\",\r\n \"hedgehog\",\r\n \"height\",\r\n \"hello\",\r\n \"helmet\",\r\n \"help\",\r\n \"hen\",\r\n \"hero\",\r\n \"hidden\",\r\n \"high\",\r\n \"hill\",\r\n \"hint\",\r\n \"hip\",\r\n \"hire\",\r\n \"history\",\r\n \"hobby\",\r\n \"hockey\",\r\n \"hold\",\r\n \"hole\",\r\n \"holiday\",\r\n \"hollow\",\r\n \"home\",\r\n \"honey\",\r\n \"hood\",\r\n \"hope\",\r\n \"horn\",\r\n \"horror\",\r\n \"horse\",\r\n \"hospital\",\r\n \"host\",\r\n \"hotel\",\r\n \"hour\",\r\n \"hover\",\r\n \"hub\",\r\n \"huge\",\r\n \"human\",\r\n \"humble\",\r\n \"humor\",\r\n \"hundred\",\r\n \"hungry\",\r\n \"hunt\",\r\n \"hurdle\",\r\n \"hurry\",\r\n \"hurt\",\r\n \"husband\",\r\n \"hybrid\",\r\n \"ice\",\r\n \"icon\",\r\n \"idea\",\r\n \"identify\",\r\n \"idle\",\r\n \"ignore\",\r\n \"ill\",\r\n \"illegal\",\r\n \"illness\",\r\n \"image\",\r\n \"imitate\",\r\n \"immense\",\r\n \"immune\",\r\n \"impact\",\r\n \"impose\",\r\n \"improve\",\r\n \"impulse\",\r\n \"inch\",\r\n \"include\",\r\n \"income\",\r\n \"increase\",\r\n \"index\",\r\n \"indicate\",\r\n \"indoor\",\r\n \"industry\",\r\n \"infant\",\r\n \"inflict\",\r\n \"inform\",\r\n \"inhale\",\r\n \"inherit\",\r\n \"initial\",\r\n \"inject\",\r\n \"injury\",\r\n \"inmate\",\r\n \"inner\",\r\n \"innocent\",\r\n \"input\",\r\n \"inquiry\",\r\n \"insane\",\r\n \"insect\",\r\n \"inside\",\r\n \"inspire\",\r\n \"install\",\r\n \"intact\",\r\n \"interest\",\r\n \"into\",\r\n \"invest\",\r\n \"invite\",\r\n \"involve\",\r\n \"iron\",\r\n \"island\",\r\n \"isolate\",\r\n \"issue\",\r\n \"item\",\r\n \"ivory\",\r\n \"jacket\",\r\n \"jaguar\",\r\n \"jar\",\r\n \"jazz\",\r\n \"jealous\",\r\n \"jeans\",\r\n \"jelly\",\r\n \"jewel\",\r\n \"job\",\r\n \"join\",\r\n \"joke\",\r\n \"journey\",\r\n \"joy\",\r\n \"judge\",\r\n \"juice\",\r\n \"jump\",\r\n \"jungle\",\r\n \"junior\",\r\n \"junk\",\r\n \"just\",\r\n \"kangaroo\",\r\n \"keen\",\r\n \"keep\",\r\n \"ketchup\",\r\n \"key\",\r\n \"kick\",\r\n \"kid\",\r\n \"kidney\",\r\n \"kind\",\r\n \"kingdom\",\r\n \"kiss\",\r\n \"kit\",\r\n \"kitchen\",\r\n \"kite\",\r\n \"kitten\",\r\n \"kiwi\",\r\n \"knee\",\r\n \"knife\",\r\n \"knock\",\r\n \"know\",\r\n \"lab\",\r\n \"label\",\r\n \"labor\",\r\n \"ladder\",\r\n \"lady\",\r\n \"lake\",\r\n \"lamp\",\r\n \"language\",\r\n \"laptop\",\r\n \"large\",\r\n \"later\",\r\n \"latin\",\r\n \"laugh\",\r\n \"laundry\",\r\n \"lava\",\r\n \"law\",\r\n \"lawn\",\r\n \"lawsuit\",\r\n \"layer\",\r\n \"lazy\",\r\n \"leader\",\r\n \"leaf\",\r\n \"learn\",\r\n \"leave\",\r\n \"lecture\",\r\n \"left\",\r\n \"leg\",\r\n \"legal\",\r\n \"legend\",\r\n \"leisure\",\r\n \"lemon\",\r\n \"lend\",\r\n \"length\",\r\n \"lens\",\r\n \"leopard\",\r\n \"lesson\",\r\n \"letter\",\r\n \"level\",\r\n \"liar\",\r\n \"liberty\",\r\n \"library\",\r\n \"license\",\r\n \"life\",\r\n \"lift\",\r\n \"light\",\r\n \"like\",\r\n \"limb\",\r\n \"limit\",\r\n \"link\",\r\n \"lion\",\r\n \"liquid\",\r\n \"list\",\r\n \"little\",\r\n \"live\",\r\n \"lizard\",\r\n \"load\",\r\n \"loan\",\r\n \"lobster\",\r\n \"local\",\r\n \"lock\",\r\n \"logic\",\r\n \"lonely\",\r\n \"long\",\r\n \"loop\",\r\n \"lottery\",\r\n \"loud\",\r\n \"lounge\",\r\n \"love\",\r\n \"loyal\",\r\n \"lucky\",\r\n \"luggage\",\r\n \"lumber\",\r\n \"lunar\",\r\n \"lunch\",\r\n \"luxury\",\r\n \"lyrics\",\r\n \"machine\",\r\n \"mad\",\r\n \"magic\",\r\n \"magnet\",\r\n \"maid\",\r\n \"mail\",\r\n \"main\",\r\n \"major\",\r\n \"make\",\r\n \"mammal\",\r\n \"man\",\r\n \"manage\",\r\n \"mandate\",\r\n \"mango\",\r\n \"mansion\",\r\n \"manual\",\r\n \"maple\",\r\n \"marble\",\r\n \"march\",\r\n \"margin\",\r\n \"marine\",\r\n \"market\",\r\n \"marriage\",\r\n \"mask\",\r\n \"mass\",\r\n \"master\",\r\n \"match\",\r\n \"material\",\r\n \"math\",\r\n \"matrix\",\r\n \"matter\",\r\n \"maximum\",\r\n \"maze\",\r\n \"meadow\",\r\n \"mean\",\r\n \"measure\",\r\n \"meat\",\r\n \"mechanic\",\r\n \"medal\",\r\n \"media\",\r\n \"melody\",\r\n \"melt\",\r\n \"member\",\r\n \"memory\",\r\n \"mention\",\r\n \"menu\",\r\n \"mercy\",\r\n \"merge\",\r\n \"merit\",\r\n \"merry\",\r\n \"mesh\",\r\n \"message\",\r\n \"metal\",\r\n \"method\",\r\n \"middle\",\r\n \"midnight\",\r\n \"milk\",\r\n \"million\",\r\n \"mimic\",\r\n \"mind\",\r\n \"minimum\",\r\n \"minor\",\r\n \"minute\",\r\n \"miracle\",\r\n \"mirror\",\r\n \"misery\",\r\n \"miss\",\r\n \"mistake\",\r\n \"mix\",\r\n \"mixed\",\r\n \"mixture\",\r\n \"mobile\",\r\n \"model\",\r\n \"modify\",\r\n \"mom\",\r\n \"moment\",\r\n \"monitor\",\r\n \"monkey\",\r\n \"monster\",\r\n \"month\",\r\n \"moon\",\r\n \"moral\",\r\n \"more\",\r\n \"morning\",\r\n \"mosquito\",\r\n \"mother\",\r\n \"motion\",\r\n \"motor\",\r\n \"mountain\",\r\n \"mouse\",\r\n \"move\",\r\n \"movie\",\r\n \"much\",\r\n \"muffin\",\r\n \"mule\",\r\n \"multiply\",\r\n \"muscle\",\r\n \"museum\",\r\n \"mushroom\",\r\n \"music\",\r\n \"must\",\r\n \"mutual\",\r\n \"myself\",\r\n \"mystery\",\r\n \"myth\",\r\n \"naive\",\r\n \"name\",\r\n \"napkin\",\r\n \"narrow\",\r\n \"nasty\",\r\n \"nation\",\r\n \"nature\",\r\n \"near\",\r\n \"neck\",\r\n \"need\",\r\n \"negative\",\r\n \"neglect\",\r\n \"neither\",\r\n \"nephew\",\r\n \"nerve\",\r\n \"nest\",\r\n \"net\",\r\n \"network\",\r\n \"neutral\",\r\n \"never\",\r\n \"news\",\r\n \"next\",\r\n \"nice\",\r\n \"night\",\r\n \"noble\",\r\n \"noise\",\r\n \"nominee\",\r\n \"noodle\",\r\n \"normal\",\r\n \"north\",\r\n \"nose\",\r\n \"notable\",\r\n \"note\",\r\n \"nothing\",\r\n \"notice\",\r\n \"novel\",\r\n \"now\",\r\n \"nuclear\",\r\n \"number\",\r\n \"nurse\",\r\n \"nut\",\r\n \"oak\",\r\n \"obey\",\r\n \"object\",\r\n \"oblige\",\r\n \"obscure\",\r\n \"observe\",\r\n \"obtain\",\r\n \"obvious\",\r\n \"occur\",\r\n \"ocean\",\r\n \"october\",\r\n \"odor\",\r\n \"off\",\r\n \"offer\",\r\n \"office\",\r\n \"often\",\r\n \"oil\",\r\n \"okay\",\r\n \"old\",\r\n \"olive\",\r\n \"olympic\",\r\n \"omit\",\r\n \"once\",\r\n \"one\",\r\n \"onion\",\r\n \"online\",\r\n \"only\",\r\n \"open\",\r\n \"opera\",\r\n \"opinion\",\r\n \"oppose\",\r\n \"option\",\r\n \"orange\",\r\n \"orbit\",\r\n \"orchard\",\r\n \"order\",\r\n \"ordinary\",\r\n \"organ\",\r\n \"orient\",\r\n \"original\",\r\n \"orphan\",\r\n \"ostrich\",\r\n \"other\",\r\n \"outdoor\",\r\n \"outer\",\r\n \"output\",\r\n \"outside\",\r\n \"oval\",\r\n \"oven\",\r\n \"over\",\r\n \"own\",\r\n \"owner\",\r\n \"oxygen\",\r\n \"oyster\",\r\n \"ozone\",\r\n \"pact\",\r\n \"paddle\",\r\n \"page\",\r\n \"pair\",\r\n \"palace\",\r\n \"palm\",\r\n \"panda\",\r\n \"panel\",\r\n \"panic\",\r\n \"panther\",\r\n \"paper\",\r\n \"parade\",\r\n \"parent\",\r\n \"park\",\r\n \"parrot\",\r\n \"party\",\r\n \"pass\",\r\n \"patch\",\r\n \"path\",\r\n \"patient\",\r\n \"patrol\",\r\n \"pattern\",\r\n \"pause\",\r\n \"pave\",\r\n \"payment\",\r\n \"peace\",\r\n \"peanut\",\r\n \"pear\",\r\n \"peasant\",\r\n \"pelican\",\r\n \"pen\",\r\n \"penalty\",\r\n \"pencil\",\r\n \"people\",\r\n \"pepper\",\r\n \"perfect\",\r\n \"permit\",\r\n \"person\",\r\n \"pet\",\r\n \"phone\",\r\n \"photo\",\r\n \"phrase\",\r\n \"physical\",\r\n \"piano\",\r\n \"picnic\",\r\n \"picture\",\r\n \"piece\",\r\n \"pig\",\r\n \"pigeon\",\r\n \"pill\",\r\n \"pilot\",\r\n \"pink\",\r\n \"pioneer\",\r\n \"pipe\",\r\n \"pistol\",\r\n \"pitch\",\r\n \"pizza\",\r\n \"place\",\r\n \"planet\",\r\n \"plastic\",\r\n \"plate\",\r\n \"play\",\r\n \"please\",\r\n \"pledge\",\r\n \"pluck\",\r\n \"plug\",\r\n \"plunge\",\r\n \"poem\",\r\n \"poet\",\r\n \"point\",\r\n \"polar\",\r\n \"pole\",\r\n \"police\",\r\n \"pond\",\r\n \"pony\",\r\n \"pool\",\r\n \"popular\",\r\n \"portion\",\r\n \"position\",\r\n \"possible\",\r\n \"post\",\r\n \"potato\",\r\n \"pottery\",\r\n \"poverty\",\r\n \"powder\",\r\n \"power\",\r\n \"practice\",\r\n \"praise\",\r\n \"predict\",\r\n \"prefer\",\r\n \"prepare\",\r\n \"present\",\r\n \"pretty\",\r\n \"prevent\",\r\n \"price\",\r\n \"pride\",\r\n \"primary\",\r\n \"print\",\r\n \"priority\",\r\n \"prison\",\r\n \"private\",\r\n \"prize\",\r\n \"problem\",\r\n \"process\",\r\n \"produce\",\r\n \"profit\",\r\n \"program\",\r\n \"project\",\r\n \"promote\",\r\n \"proof\",\r\n \"property\",\r\n \"prosper\",\r\n \"protect\",\r\n \"proud\",\r\n \"provide\",\r\n \"public\",\r\n \"pudding\",\r\n \"pull\",\r\n \"pulp\",\r\n \"pulse\",\r\n \"pumpkin\",\r\n \"punch\",\r\n \"pupil\",\r\n \"puppy\",\r\n \"purchase\",\r\n \"purity\",\r\n \"purpose\",\r\n \"purse\",\r\n \"push\",\r\n \"put\",\r\n \"puzzle\",\r\n \"pyramid\",\r\n \"quality\",\r\n \"quantum\",\r\n \"quarter\",\r\n \"question\",\r\n \"quick\",\r\n \"quit\",\r\n \"quiz\",\r\n \"quote\",\r\n \"rabbit\",\r\n \"raccoon\",\r\n \"race\",\r\n \"rack\",\r\n \"radar\",\r\n \"radio\",\r\n \"rail\",\r\n \"rain\",\r\n \"raise\",\r\n \"rally\",\r\n \"ramp\",\r\n \"ranch\",\r\n \"random\",\r\n \"range\",\r\n \"rapid\",\r\n \"rare\",\r\n \"rate\",\r\n \"rather\",\r\n \"raven\",\r\n \"raw\",\r\n \"razor\",\r\n \"ready\",\r\n \"real\",\r\n \"reason\",\r\n \"rebel\",\r\n \"rebuild\",\r\n \"recall\",\r\n \"receive\",\r\n \"recipe\",\r\n \"record\",\r\n \"recycle\",\r\n \"reduce\",\r\n \"reflect\",\r\n \"reform\",\r\n \"refuse\",\r\n \"region\",\r\n \"regret\",\r\n \"regular\",\r\n \"reject\",\r\n \"relax\",\r\n \"release\",\r\n \"relief\",\r\n \"rely\",\r\n \"remain\",\r\n \"remember\",\r\n \"remind\",\r\n \"remove\",\r\n \"render\",\r\n \"renew\",\r\n \"rent\",\r\n \"reopen\",\r\n \"repair\",\r\n \"repeat\",\r\n \"replace\",\r\n \"report\",\r\n \"require\",\r\n \"rescue\",\r\n \"resemble\",\r\n \"resist\",\r\n \"resource\",\r\n \"response\",\r\n \"result\",\r\n \"retire\",\r\n \"retreat\",\r\n \"return\",\r\n \"reunion\",\r\n \"reveal\",\r\n \"review\",\r\n \"reward\",\r\n \"rhythm\",\r\n \"rib\",\r\n \"ribbon\",\r\n \"rice\",\r\n \"rich\",\r\n \"ride\",\r\n \"ridge\",\r\n \"rifle\",\r\n \"right\",\r\n \"rigid\",\r\n \"ring\",\r\n \"riot\",\r\n \"ripple\",\r\n \"risk\",\r\n \"ritual\",\r\n \"rival\",\r\n \"river\",\r\n \"road\",\r\n \"roast\",\r\n \"robot\",\r\n \"robust\",\r\n \"rocket\",\r\n \"romance\",\r\n \"roof\",\r\n \"rookie\",\r\n \"room\",\r\n \"rose\",\r\n \"rotate\",\r\n \"rough\",\r\n \"round\",\r\n \"route\",\r\n \"royal\",\r\n \"rubber\",\r\n \"rude\",\r\n \"rug\",\r\n \"rule\",\r\n \"run\",\r\n \"runway\",\r\n \"rural\",\r\n \"sad\",\r\n \"saddle\",\r\n \"sadness\",\r\n \"safe\",\r\n \"sail\",\r\n \"salad\",\r\n \"salmon\",\r\n \"salon\",\r\n \"salt\",\r\n \"salute\",\r\n \"same\",\r\n \"sample\",\r\n \"sand\",\r\n \"satisfy\",\r\n \"satoshi\",\r\n \"sauce\",\r\n \"sausage\",\r\n \"save\",\r\n \"say\",\r\n \"scale\",\r\n \"scan\",\r\n \"scare\",\r\n \"scatter\",\r\n \"scene\",\r\n \"scheme\",\r\n \"school\",\r\n \"science\",\r\n \"scissors\",\r\n \"scorpion\",\r\n \"scout\",\r\n \"scrap\",\r\n \"screen\",\r\n \"script\",\r\n \"scrub\",\r\n \"sea\",\r\n \"search\",\r\n \"season\",\r\n \"seat\",\r\n \"second\",\r\n \"secret\",\r\n \"section\",\r\n \"security\",\r\n \"seed\",\r\n \"seek\",\r\n \"segment\",\r\n \"select\",\r\n \"sell\",\r\n \"seminar\",\r\n \"senior\",\r\n \"sense\",\r\n \"sentence\",\r\n \"series\",\r\n \"service\",\r\n \"session\",\r\n \"settle\",\r\n \"setup\",\r\n \"seven\",\r\n \"shadow\",\r\n \"shaft\",\r\n \"shallow\",\r\n \"share\",\r\n \"shed\",\r\n \"shell\",\r\n \"sheriff\",\r\n \"shield\",\r\n \"shift\",\r\n \"shine\",\r\n \"ship\",\r\n \"shiver\",\r\n \"shock\",\r\n \"shoe\",\r\n \"shoot\",\r\n \"shop\",\r\n \"short\",\r\n \"shoulder\",\r\n \"shove\",\r\n \"shrimp\",\r\n \"shrug\",\r\n \"shuffle\",\r\n \"shy\",\r\n \"sibling\",\r\n \"sick\",\r\n \"side\",\r\n \"siege\",\r\n \"sight\",\r\n \"sign\",\r\n \"silent\",\r\n \"silk\",\r\n \"silly\",\r\n \"silver\",\r\n \"similar\",\r\n \"simple\",\r\n \"since\",\r\n \"sing\",\r\n \"siren\",\r\n \"sister\",\r\n \"situate\",\r\n \"six\",\r\n \"size\",\r\n \"skate\",\r\n \"sketch\",\r\n \"ski\",\r\n \"skill\",\r\n \"skin\",\r\n \"skirt\",\r\n \"skull\",\r\n \"slab\",\r\n \"slam\",\r\n \"sleep\",\r\n \"slender\",\r\n \"slice\",\r\n \"slide\",\r\n \"slight\",\r\n \"slim\",\r\n \"slogan\",\r\n \"slot\",\r\n \"slow\",\r\n \"slush\",\r\n \"small\",\r\n \"smart\",\r\n \"smile\",\r\n \"smoke\",\r\n \"smooth\",\r\n \"snack\",\r\n \"snake\",\r\n \"snap\",\r\n \"sniff\",\r\n \"snow\",\r\n \"soap\",\r\n \"soccer\",\r\n \"social\",\r\n \"sock\",\r\n \"soda\",\r\n \"soft\",\r\n \"solar\",\r\n \"soldier\",\r\n \"solid\",\r\n \"solution\",\r\n \"solve\",\r\n \"someone\",\r\n \"song\",\r\n \"soon\",\r\n \"sorry\",\r\n \"sort\",\r\n \"soul\",\r\n \"sound\",\r\n \"soup\",\r\n \"source\",\r\n \"south\",\r\n \"space\",\r\n \"spare\",\r\n \"spatial\",\r\n \"spawn\",\r\n \"speak\",\r\n \"special\",\r\n \"speed\",\r\n \"spell\",\r\n \"spend\",\r\n \"sphere\",\r\n \"spice\",\r\n \"spider\",\r\n \"spike\",\r\n \"spin\",\r\n \"spirit\",\r\n \"split\",\r\n \"spoil\",\r\n \"sponsor\",\r\n \"spoon\",\r\n \"sport\",\r\n \"spot\",\r\n \"spray\",\r\n \"spread\",\r\n \"spring\",\r\n \"spy\",\r\n \"square\",\r\n \"squeeze\",\r\n \"squirrel\",\r\n \"stable\",\r\n \"stadium\",\r\n \"staff\",\r\n \"stage\",\r\n \"stairs\",\r\n \"stamp\",\r\n \"stand\",\r\n \"start\",\r\n \"state\",\r\n \"stay\",\r\n \"steak\",\r\n \"steel\",\r\n \"stem\",\r\n \"step\",\r\n \"stereo\",\r\n \"stick\",\r\n \"still\",\r\n \"sting\",\r\n \"stock\",\r\n \"stomach\",\r\n \"stone\",\r\n \"stool\",\r\n \"story\",\r\n \"stove\",\r\n \"strategy\",\r\n \"street\",\r\n \"strike\",\r\n \"strong\",\r\n \"struggle\",\r\n \"student\",\r\n \"stuff\",\r\n \"stumble\",\r\n \"style\",\r\n \"subject\",\r\n \"submit\",\r\n \"subway\",\r\n \"success\",\r\n \"such\",\r\n \"sudden\",\r\n \"suffer\",\r\n \"sugar\",\r\n \"suggest\",\r\n \"suit\",\r\n \"summer\",\r\n \"sun\",\r\n \"sunny\",\r\n \"sunset\",\r\n \"super\",\r\n \"supply\",\r\n \"supreme\",\r\n \"sure\",\r\n \"surface\",\r\n \"surge\",\r\n \"surprise\",\r\n \"surround\",\r\n \"survey\",\r\n \"suspect\",\r\n \"sustain\",\r\n \"swallow\",\r\n \"swamp\",\r\n \"swap\",\r\n \"swarm\",\r\n \"swear\",\r\n \"sweet\",\r\n \"swift\",\r\n \"swim\",\r\n \"swing\",\r\n \"switch\",\r\n \"sword\",\r\n \"symbol\",\r\n \"symptom\",\r\n \"syrup\",\r\n \"system\",\r\n \"table\",\r\n \"tackle\",\r\n \"tag\",\r\n \"tail\",\r\n \"talent\",\r\n \"talk\",\r\n \"tank\",\r\n \"tape\",\r\n \"target\",\r\n \"task\",\r\n \"taste\",\r\n \"tattoo\",\r\n \"taxi\",\r\n \"teach\",\r\n \"team\",\r\n \"tell\",\r\n \"ten\",\r\n \"tenant\",\r\n \"tennis\",\r\n \"tent\",\r\n \"term\",\r\n \"test\",\r\n \"text\",\r\n \"thank\",\r\n \"that\",\r\n \"theme\",\r\n \"then\",\r\n \"theory\",\r\n \"there\",\r\n \"they\",\r\n \"thing\",\r\n \"this\",\r\n \"thought\",\r\n \"three\",\r\n \"thrive\",\r\n \"throw\",\r\n \"thumb\",\r\n \"thunder\",\r\n \"ticket\",\r\n \"tide\",\r\n \"tiger\",\r\n \"tilt\",\r\n \"timber\",\r\n \"time\",\r\n \"tiny\",\r\n \"tip\",\r\n \"tired\",\r\n \"tissue\",\r\n \"title\",\r\n \"toast\",\r\n \"tobacco\",\r\n \"today\",\r\n \"toddler\",\r\n \"toe\",\r\n \"together\",\r\n \"toilet\",\r\n \"token\",\r\n \"tomato\",\r\n \"tomorrow\",\r\n \"tone\",\r\n \"tongue\",\r\n \"tonight\",\r\n \"tool\",\r\n \"tooth\",\r\n \"top\",\r\n \"topic\",\r\n \"topple\",\r\n \"torch\",\r\n \"tornado\",\r\n \"tortoise\",\r\n \"toss\",\r\n \"total\",\r\n \"tourist\",\r\n \"toward\",\r\n \"tower\",\r\n \"town\",\r\n \"toy\",\r\n \"track\",\r\n \"trade\",\r\n \"traffic\",\r\n \"tragic\",\r\n \"train\",\r\n \"transfer\",\r\n \"trap\",\r\n \"trash\",\r\n \"travel\",\r\n \"tray\",\r\n \"treat\",\r\n \"tree\",\r\n \"trend\",\r\n \"trial\",\r\n \"tribe\",\r\n \"trick\",\r\n \"trigger\",\r\n \"trim\",\r\n \"trip\",\r\n \"trophy\",\r\n \"trouble\",\r\n \"truck\",\r\n \"true\",\r\n \"truly\",\r\n \"trumpet\",\r\n \"trust\",\r\n \"truth\",\r\n \"try\",\r\n \"tube\",\r\n \"tuition\",\r\n \"tumble\",\r\n \"tuna\",\r\n \"tunnel\",\r\n \"turkey\",\r\n \"turn\",\r\n \"turtle\",\r\n \"twelve\",\r\n \"twenty\",\r\n \"twice\",\r\n \"twin\",\r\n \"twist\",\r\n \"two\",\r\n \"type\",\r\n \"typical\",\r\n \"ugly\",\r\n \"umbrella\",\r\n \"unable\",\r\n \"unaware\",\r\n \"uncle\",\r\n \"uncover\",\r\n \"under\",\r\n \"undo\",\r\n \"unfair\",\r\n \"unfold\",\r\n \"unhappy\",\r\n \"uniform\",\r\n \"unique\",\r\n \"unit\",\r\n \"universe\",\r\n \"unknown\",\r\n \"unlock\",\r\n \"until\",\r\n \"unusual\",\r\n \"unveil\",\r\n \"update\",\r\n \"upgrade\",\r\n \"uphold\",\r\n \"upon\",\r\n \"upper\",\r\n \"upset\",\r\n \"urban\",\r\n \"urge\",\r\n \"usage\",\r\n \"use\",\r\n \"used\",\r\n \"useful\",\r\n \"useless\",\r\n \"usual\",\r\n \"utility\",\r\n \"vacant\",\r\n \"vacuum\",\r\n \"vague\",\r\n \"valid\",\r\n \"valley\",\r\n \"valve\",\r\n \"van\",\r\n \"vanish\",\r\n \"vapor\",\r\n \"various\",\r\n \"vast\",\r\n \"vault\",\r\n \"vehicle\",\r\n \"velvet\",\r\n \"vendor\",\r\n \"venture\",\r\n \"venue\",\r\n \"verb\",\r\n \"verify\",\r\n \"version\",\r\n \"very\",\r\n \"vessel\",\r\n \"veteran\",\r\n \"viable\",\r\n \"vibrant\",\r\n \"vicious\",\r\n \"victory\",\r\n \"video\",\r\n \"view\",\r\n \"village\",\r\n \"vintage\",\r\n \"violin\",\r\n \"virtual\",\r\n \"virus\",\r\n \"visa\",\r\n \"visit\",\r\n \"visual\",\r\n \"vital\",\r\n \"vivid\",\r\n \"vocal\",\r\n \"voice\",\r\n \"void\",\r\n \"volcano\",\r\n \"volume\",\r\n \"vote\",\r\n \"voyage\",\r\n \"wage\",\r\n \"wagon\",\r\n \"wait\",\r\n \"walk\",\r\n \"wall\",\r\n \"walnut\",\r\n \"want\",\r\n \"warfare\",\r\n \"warm\",\r\n \"warrior\",\r\n \"wash\",\r\n \"wasp\",\r\n \"waste\",\r\n \"water\",\r\n \"wave\",\r\n \"way\",\r\n \"wealth\",\r\n \"weapon\",\r\n \"wear\",\r\n \"weasel\",\r\n \"weather\",\r\n \"web\",\r\n \"wedding\",\r\n \"weekend\",\r\n \"weird\",\r\n \"welcome\",\r\n \"west\",\r\n \"wet\",\r\n \"whale\",\r\n \"what\",\r\n \"wheat\",\r\n \"wheel\",\r\n \"when\",\r\n \"where\",\r\n \"whip\",\r\n \"whisper\",\r\n \"wide\",\r\n \"width\",\r\n \"wife\",\r\n \"wild\",\r\n \"will\",\r\n \"win\",\r\n \"window\",\r\n \"wine\",\r\n \"wing\",\r\n \"wink\",\r\n \"winner\",\r\n \"winter\",\r\n \"wire\",\r\n \"wisdom\",\r\n \"wise\",\r\n \"wish\",\r\n \"witness\",\r\n \"wolf\",\r\n \"woman\",\r\n \"wonder\",\r\n \"wood\",\r\n \"wool\",\r\n \"word\",\r\n \"work\",\r\n \"world\",\r\n \"worry\",\r\n \"worth\",\r\n \"wrap\",\r\n \"wreck\",\r\n \"wrestle\",\r\n \"wrist\",\r\n \"write\",\r\n \"wrong\",\r\n \"yard\",\r\n \"year\",\r\n \"yellow\",\r\n \"you\",\r\n \"young\",\r\n \"youth\",\r\n \"zebra\",\r\n \"zero\",\r\n \"zone\",\r\n \"zoo\"\r\n];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { Converter, RandomHelper } from \"@iota/util.js\";\r\nimport { Sha256 } from \"../hashes/sha256.mjs\";\r\nimport { Pbkdf2 } from \"./pbkdf2.mjs\";\r\nimport { english } from \"./wordlists/english.mjs\";\r\n/**\r\n * Implementation of Bip39 for mnemonic generation.\r\n */\r\nexport class Bip39 {\r\n /**\r\n * Set the wordlist and joining character.\r\n * @param wordlistData Array of words.\r\n * @param joiningChar The character to join the words with.\r\n */\r\n static setWordList(wordlistData, joiningChar = \" \") {\r\n Bip39._wordlist = wordlistData;\r\n Bip39._joiningChar = joiningChar;\r\n }\r\n /**\r\n * Generate a random mnemonic.\r\n * @param length The length of the mnemonic to generate, defaults to 256.\r\n * @returns The random mnemonic.\r\n */\r\n static randomMnemonic(length = 256) {\r\n if (length % 32 !== 0) {\r\n throw new Error(\"The length must be a multiple of 32\");\r\n }\r\n const randomBytes = RandomHelper.generate(length / 8);\r\n return Bip39.entropyToMnemonic(randomBytes);\r\n }\r\n /**\r\n * Generate a mnemonic from the entropy.\r\n * @param entropy The entropy to generate.\r\n * @returns The mnemonic.\r\n */\r\n static entropyToMnemonic(entropy) {\r\n if (!Bip39._wordlist) {\r\n Bip39.setWordList(english, \" \");\r\n }\r\n if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\r\n throw new Error(`The length of the entropy is invalid, it should be a multiple of 4, >= 16 and <= 32, it is ${entropy.length}`);\r\n }\r\n const bin = `${Converter.bytesToBinary(entropy)}${Bip39.entropyChecksumBits(entropy)}`;\r\n const mnemonic = [];\r\n for (let i = 0; i < bin.length / 11; i++) {\r\n const wordIndexBits = bin.slice(i * 11, (i + 1) * 11);\r\n const wordIndex = Number.parseInt(wordIndexBits, 2);\r\n mnemonic.push(Bip39._wordlist[wordIndex]);\r\n }\r\n return mnemonic.join(Bip39._joiningChar);\r\n }\r\n /**\r\n * Convert a mnemonic to a seed.\r\n * @param mnemonic The mnemonic to convert.\r\n * @param password The password to apply to the seed generation.\r\n * @param iterations The number of iterations to perform on the password function, defaults to 2048.\r\n * @param keyLength The size of the key length to generate, defaults to 64.\r\n * @returns The seed.\r\n */\r\n static mnemonicToSeed(mnemonic, password, iterations = 2048, keyLength = 64) {\r\n const mnemonicBytes = Converter.utf8ToBytes(mnemonic.normalize(\"NFKD\"));\r\n const salt = Converter.utf8ToBytes(`mnemonic${(password !== null && password !== void 0 ? password : \"\").normalize(\"NFKD\")}`);\r\n return Pbkdf2.sha512(mnemonicBytes, salt, iterations, keyLength);\r\n }\r\n /**\r\n * Convert the mnemonic back to entropy.\r\n * @param mnemonic The mnemonic to convert.\r\n * @returns The entropy.\r\n */\r\n static mnemonicToEntropy(mnemonic) {\r\n if (!Bip39._wordlist) {\r\n Bip39.setWordList(english, \" \");\r\n }\r\n const words = mnemonic.normalize(\"NFKD\").split(Bip39._joiningChar);\r\n if (words.length % 3 !== 0) {\r\n throw new Error(`Invalid mnemonic the number of words should be a multiple of 3, it is ${words.length}`);\r\n }\r\n const bits = words\r\n .map(word => {\r\n const index = Bip39._wordlist.indexOf(word);\r\n if (index === -1) {\r\n throw new Error(`The mnemonic contains a word not in the wordlist ${word}`);\r\n }\r\n return index.toString(2).padStart(11, \"0\");\r\n })\r\n .join(\"\");\r\n const dividerIndex = Math.floor(bits.length / 33) * 32;\r\n const entropyBits = bits.slice(0, dividerIndex);\r\n const checksumBits = bits.slice(dividerIndex);\r\n const entropy = Converter.binaryToBytes(entropyBits);\r\n if (entropy.length % 4 !== 0 || entropy.length < 16 || entropy.length > 32) {\r\n throw new Error(\"The length of the entropy is invalid\");\r\n }\r\n const newChecksum = Bip39.entropyChecksumBits(entropy);\r\n if (newChecksum !== checksumBits) {\r\n throw new Error(`The checksum does not match ${newChecksum} != ${checksumBits}.`);\r\n }\r\n return entropy;\r\n }\r\n /**\r\n * Calculate the entropy checksum.\r\n * @param entropy The entropy to calculate the checksum for.\r\n * @returns The checksum.\r\n */\r\n static entropyChecksumBits(entropy) {\r\n const hash = Sha256.sum256(entropy);\r\n const bits = entropy.length * 8;\r\n const hashbits = Converter.bytesToBinary(hash);\r\n return hashbits.slice(0, bits / 32);\r\n }\r\n}\r\n/**\r\n * The character to join the mnemonics with.\r\n * @internal\r\n */\r\nBip39._joiningChar = \" \"; // \\u3000 for japanese\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/**\r\n * Array helper methods.\r\n */\r\nexport class ArrayHelper {\r\n /**\r\n * Are the two array equals.\r\n * @param array1 The first array.\r\n * @param array2 The second array.\r\n * @returns True if the arrays are equal.\r\n */\r\n static equal(array1, array2) {\r\n if (!array1 || !array2 || array1.length !== array2.length) {\r\n return false;\r\n }\r\n for (let i = 0; i < array1.length; i++) {\r\n if (array1[i] !== array2[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport bigInt from \"big-integer\";\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\n// @internal\r\nexport const BIG_1_SHIFTL_20 = bigInt(1).shiftLeft(20);\r\n// @internal\r\nexport const BIG_1_SHIFTL_24 = bigInt(1).shiftLeft(24);\r\n// @internal\r\nexport const BIG_1_SHIFTL_25 = bigInt(1).shiftLeft(25);\r\n// @internal\r\nexport const BIG_ARR = [\r\n bigInt(0),\r\n bigInt(1),\r\n bigInt(2),\r\n bigInt(3),\r\n bigInt(4),\r\n bigInt(5),\r\n bigInt(6),\r\n bigInt(7),\r\n bigInt(8),\r\n bigInt(9),\r\n bigInt(10),\r\n bigInt(11),\r\n bigInt(12),\r\n bigInt(13),\r\n bigInt(14),\r\n bigInt(15),\r\n bigInt(16),\r\n bigInt(17),\r\n bigInt(18),\r\n bigInt(19),\r\n bigInt(20),\r\n bigInt(21),\r\n bigInt(22),\r\n bigInt(23),\r\n bigInt(24),\r\n bigInt(25),\r\n bigInt(26)\r\n];\r\n// @internal\r\nexport const BIG_38 = bigInt(38);\r\n// @internal\r\nexport const BIG_666643 = bigInt(666643);\r\n// @internal\r\nexport const BIG_470296 = bigInt(470296);\r\n// @internal\r\nexport const BIG_654183 = bigInt(654183);\r\n// @internal\r\nexport const BIG_997805 = bigInt(997805);\r\n// @internal\r\nexport const BIG_136657 = bigInt(136657);\r\n// @internal\r\nexport const BIG_683901 = bigInt(683901);\r\n// @internal\r\nexport const BIG_2097151 = bigInt(2097151);\r\n// @internal\r\nexport const BIG_8388607 = bigInt(8388607);\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/* eslint-disable newline-per-chained-call */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { BigIntHelper } from \"@iota/util.js\";\r\nimport bigInt from \"big-integer\";\r\nimport { BIG_1_SHIFTL_24, BIG_1_SHIFTL_25, BIG_38, BIG_8388607, BIG_ARR } from \"./bigIntCommon.mjs\";\r\n/**\r\n * Class for field element operations.\r\n * FieldElement represents an element of the field GF(2^255 - 19). An element\r\n * t, entries t[0]...t[9], represents the integer t[0]+2^26 t[1]+2^51 t[2]+2^77\r\n * t[3]+2^102 t[4]+...+2^230 t[9]. Bounds on each t[i] vary depending on\r\n * context.\r\n */\r\nexport class FieldElement {\r\n /**\r\n * Create a new instance of FieldElement.\r\n * @param values A set of values to initialize the array.\r\n */\r\n constructor(values) {\r\n this.data = new Int32Array(FieldElement.FIELD_ELEMENT_SIZE);\r\n if (values) {\r\n this.data.set(values);\r\n }\r\n }\r\n /**\r\n * Calculates h = f * g\r\n * Can overlap h with f or g.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n * |g| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n *\r\n * Notes on implementation strategy:\r\n *\r\n * Using schoolbook multiplication.\r\n * Karatsuba would save a little in some cost models.\r\n *\r\n * Most multiplications by 2 and 19 are 32-bit precomputations;\r\n * cheaper than 64-bit postcomputations.\r\n *\r\n * There is one remaining multiplication by 19 in the carry chain;\r\n * one *19 precomputation can be merged into this,\r\n * but the resulting data flow is considerably less clean.\r\n *\r\n * There are 12 carries below.\r\n * 10 of them are 2-way parallelizable and vectorizable.\r\n * Can get away with 11 carries, but then data flow is much deeper.\r\n *\r\n * With tighter constraints on inputs, can squeeze carries into: number.\r\n * @param f The f element.\r\n * @param g The g element.\r\n */\r\n mul(f, g) {\r\n const f0 = bigInt(f.data[0]);\r\n const f1 = bigInt(f.data[1]);\r\n const f2 = bigInt(f.data[2]);\r\n const f3 = bigInt(f.data[3]);\r\n const f4 = bigInt(f.data[4]);\r\n const f5 = bigInt(f.data[5]);\r\n const f6 = bigInt(f.data[6]);\r\n const f7 = bigInt(f.data[7]);\r\n const f8 = bigInt(f.data[8]);\r\n const f9 = bigInt(f.data[9]);\r\n const f12 = bigInt(2 * f.data[1]);\r\n const f32 = bigInt(2 * f.data[3]);\r\n const f52 = bigInt(2 * f.data[5]);\r\n const f72 = bigInt(2 * f.data[7]);\r\n const f92 = bigInt(2 * f.data[9]);\r\n const g0 = bigInt(g.data[0]);\r\n const g1 = bigInt(g.data[1]);\r\n const g2 = bigInt(g.data[2]);\r\n const g3 = bigInt(g.data[3]);\r\n const g4 = bigInt(g.data[4]);\r\n const g5 = bigInt(g.data[5]);\r\n const g6 = bigInt(g.data[6]);\r\n const g7 = bigInt(g.data[7]);\r\n const g8 = bigInt(g.data[8]);\r\n const g9 = bigInt(g.data[9]);\r\n const g119 = bigInt(19 * g.data[1]); /* 1.4*2^29 */\r\n const g219 = bigInt(19 * g.data[2]); /* 1.4*2^30; still ok */\r\n const g319 = bigInt(19 * g.data[3]);\r\n const g419 = bigInt(19 * g.data[4]);\r\n const g519 = bigInt(19 * g.data[5]);\r\n const g619 = bigInt(19 * g.data[6]);\r\n const g719 = bigInt(19 * g.data[7]);\r\n const g819 = bigInt(19 * g.data[8]);\r\n const g919 = bigInt(19 * g.data[9]);\r\n const h0 = f0\r\n .times(g0)\r\n .plus(f12.times(g919))\r\n .plus(f2.times(g819))\r\n .plus(f32.times(g719))\r\n .plus(f4.times(g619))\r\n .plus(f52.times(g519))\r\n .plus(f6.times(g419))\r\n .plus(f72.times(g319))\r\n .plus(f8.times(g219))\r\n .plus(f92.times(g119));\r\n const h1 = f0\r\n .times(g1)\r\n .plus(f1.times(g0))\r\n .plus(f2.times(g919))\r\n .plus(f3.times(g819))\r\n .plus(f4.times(g719))\r\n .plus(f5.times(g619))\r\n .plus(f6.times(g519))\r\n .plus(f7.times(g419))\r\n .plus(f8.times(g319))\r\n .plus(f9.times(g219));\r\n const h2 = f0\r\n .times(g2)\r\n .plus(f12.times(g1))\r\n .plus(f2.times(g0))\r\n .plus(f32.times(g919))\r\n .plus(f4.times(g819))\r\n .plus(f52.times(g719))\r\n .plus(f6.times(g619))\r\n .plus(f72.times(g519))\r\n .plus(f8.times(g419))\r\n .plus(f92.times(g319));\r\n const h3 = f0\r\n .times(g3)\r\n .plus(f1.times(g2))\r\n .plus(f2.times(g1))\r\n .plus(f3.times(g0))\r\n .plus(f4.times(g919))\r\n .plus(f5.times(g819))\r\n .plus(f6.times(g719))\r\n .plus(f7.times(g619))\r\n .plus(f8.times(g519))\r\n .plus(f9.times(g419));\r\n const h4 = f0\r\n .times(g4)\r\n .plus(f12.times(g3))\r\n .plus(f2.times(g2))\r\n .plus(f32.times(g1))\r\n .plus(f4.times(g0))\r\n .plus(f52.times(g919))\r\n .plus(f6.times(g819))\r\n .plus(f72.times(g719))\r\n .plus(f8.times(g619))\r\n .plus(f92.times(g519));\r\n const h5 = f0\r\n .times(g5)\r\n .plus(f1.times(g4))\r\n .plus(f2.times(g3))\r\n .plus(f3.times(g2))\r\n .plus(f4.times(g1))\r\n .plus(f5.times(g0))\r\n .plus(f6.times(g919))\r\n .plus(f7.times(g819))\r\n .plus(f8.times(g719))\r\n .plus(f9.times(g619));\r\n const h6 = f0\r\n .times(g6)\r\n .plus(f12.times(g5))\r\n .plus(f2.times(g4))\r\n .plus(f32.times(g3))\r\n .plus(f4.times(g2))\r\n .plus(f52.times(g1))\r\n .plus(f6.times(g0))\r\n .plus(f72.times(g919))\r\n .plus(f8.times(g819))\r\n .plus(f92.times(g719));\r\n const h7 = f0\r\n .times(g7)\r\n .plus(f1.times(g6))\r\n .plus(f2.times(g5))\r\n .plus(f3.times(g4))\r\n .plus(f4.times(g3))\r\n .plus(f5.times(g2))\r\n .plus(f6.times(g1))\r\n .plus(f7.times(g0))\r\n .plus(f8.times(g919))\r\n .plus(f9.times(g819));\r\n const h8 = f0\r\n .times(g8)\r\n .plus(f12.times(g7))\r\n .plus(f2.times(g6))\r\n .plus(f32.times(g5))\r\n .plus(f4.times(g4))\r\n .plus(f52.times(g3))\r\n .plus(f6.times(g2))\r\n .plus(f72.times(g1))\r\n .plus(f8.times(g0))\r\n .plus(f92.times(g919));\r\n const h9 = f0\r\n .times(g9)\r\n .plus(f1.times(g8))\r\n .plus(f2.times(g7))\r\n .plus(f3.times(g6))\r\n .plus(f4.times(g5))\r\n .plus(f5.times(g4))\r\n .plus(f6.times(g3))\r\n .plus(f7.times(g2))\r\n .plus(f8.times(g1))\r\n .plus(f9.times(g0));\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * Combine the element.\r\n * @param h0 The h0 component.\r\n * @param h1 The h1 component.\r\n * @param h2 The h2 component.\r\n * @param h3 The h3 component.\r\n * @param h4 The h4 component.\r\n * @param h5 The h5 component.\r\n * @param h6 The h6 component.\r\n * @param h7 The h7 component.\r\n * @param h8 The h8 component.\r\n * @param h9 The h9 component.\r\n */\r\n combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9) {\r\n let c0;\r\n let c4;\r\n /*\r\n |h0| <= (1.1*1.1*2^52*(1+19+19+19+19)+1.1*1.1*2^50*(38+38+38+38+38))\r\n i.e. |h0| <= 1.2*2^59; narrower ranges for h2, h4, h6, h8\r\n |h1| <= (1.1*1.1*2^51*(1+1+19+19+19+19+19+19+19+19))\r\n i.e. |h1| <= 1.5*2^58; narrower ranges for h3, h5, h7, h9\r\n */\r\n c0 = h0.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h1 = h1.plus(c0);\r\n h0 = h0.minus(c0.shiftLeft(BIG_ARR[26]));\r\n c4 = h4.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h5 = h5.plus(c4);\r\n h4 = h4.minus(c4.shiftLeft(BIG_ARR[26]));\r\n /* |h0| <= 2^25 */\r\n /* |h4| <= 2^25 */\r\n /* |h1| <= 1.51*2^58 */\r\n /* |h5| <= 1.51*2^58 */\r\n const c1 = h1.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h2 = h2.plus(c1);\r\n h1 = h1.minus(c1.shiftLeft(BIG_ARR[25]));\r\n const c5 = h5.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h6 = h6.plus(c5);\r\n h5 = h5.minus(c5.shiftLeft(BIG_ARR[25]));\r\n /* |h1| <= 2^24; from now on fits into: number */\r\n /* |h5| <= 2^24; from now on fits into: number */\r\n /* |h2| <= 1.21*2^59 */\r\n /* |h6| <= 1.21*2^59 */\r\n const c2 = h2.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h3 = h3.plus(c2);\r\n h2 = h2.minus(c2.shiftLeft(BIG_ARR[26]));\r\n const c6 = h6.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h7 = h7.plus(c6);\r\n h6 = h6.minus(c6.shiftLeft(BIG_ARR[26]));\r\n /* |h2| <= 2^25; from now on fits into: number unchanged */\r\n /* |h6| <= 2^25; from now on fits into: number unchanged */\r\n /* |h3| <= 1.51*2^58 */\r\n /* |h7| <= 1.51*2^58 */\r\n const c3 = h3.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h4 = h4.plus(c3);\r\n h3 = h3.minus(c3.shiftLeft(BIG_ARR[25]));\r\n const c7 = h7.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h8 = h8.plus(c7);\r\n h7 = h7.minus(c7.shiftLeft(BIG_ARR[25]));\r\n /* |h3| <= 2^24; from now on fits into: number unchanged */\r\n /* |h7| <= 2^24; from now on fits into: number unchanged */\r\n /* |h4| <= 1.52*2^33 */\r\n /* |h8| <= 1.52*2^33 */\r\n c4 = h4.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h5 = h5.plus(c4);\r\n h4 = h4.minus(c4.shiftLeft(BIG_ARR[26]));\r\n const c8 = h8.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h9 = h9.plus(c8);\r\n h8 = h8.minus(c8.shiftLeft(BIG_ARR[26]));\r\n /* |h4| <= 2^25; from now on fits into: number unchanged */\r\n /* |h8| <= 2^25; from now on fits into: number unchanged */\r\n /* |h5| <= 1.01*2^24 */\r\n /* |h9| <= 1.51*2^58 */\r\n const c9 = h9.plus(BIG_1_SHIFTL_24).shiftRight(BIG_ARR[25]);\r\n h0 = h0.plus(c9.times(BIG_ARR[19]));\r\n h9 = h9.minus(c9.shiftLeft(BIG_ARR[25]));\r\n /* |h9| <= 2^24; from now on fits into: number unchanged */\r\n /* |h0| <= 1.8*2^37 */\r\n c0 = h0.plus(BIG_1_SHIFTL_25).shiftRight(BIG_ARR[26]);\r\n h1 = h1.plus(c0);\r\n h0 = h0.minus(c0.shiftLeft(BIG_ARR[26]));\r\n /* |h0| <= 2^25; from now on fits into: number unchanged */\r\n /* |h1| <= 1.01*2^24 */\r\n this.data[0] = Number(h0);\r\n this.data[1] = Number(h1);\r\n this.data[2] = Number(h2);\r\n this.data[3] = Number(h3);\r\n this.data[4] = Number(h4);\r\n this.data[5] = Number(h5);\r\n this.data[6] = Number(h6);\r\n this.data[7] = Number(h7);\r\n this.data[8] = Number(h8);\r\n this.data[9] = Number(h9);\r\n }\r\n /**\r\n * FieldElement.square calculates h = f*f. Can overlap h with f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n * @param f The f element.\r\n */\r\n square(f) {\r\n const { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 } = this.internalSquare(f);\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * FieldElement.square calculates h = f*f. Can overlap h with f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^26,1.1*2^25,1.1*2^26,1.1*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n * @param f The f element.\r\n * @returns The components.\r\n */\r\n internalSquare(f) {\r\n const f0 = bigInt(f.data[0]);\r\n const f1 = bigInt(f.data[1]);\r\n const f2 = bigInt(f.data[2]);\r\n const f3 = bigInt(f.data[3]);\r\n const f4 = bigInt(f.data[4]);\r\n const f5 = bigInt(f.data[5]);\r\n const f6 = bigInt(f.data[6]);\r\n const f7 = bigInt(f.data[7]);\r\n const f8 = bigInt(f.data[8]);\r\n const f9 = bigInt(f.data[9]);\r\n const f02 = bigInt(2 * f.data[0]);\r\n const f12 = bigInt(2 * f.data[1]);\r\n const f22 = bigInt(2 * f.data[2]);\r\n const f32 = bigInt(2 * f.data[3]);\r\n const f42 = bigInt(2 * f.data[4]);\r\n const f52 = bigInt(2 * f.data[5]);\r\n const f62 = bigInt(2 * f.data[6]);\r\n const f72 = bigInt(2 * f.data[7]);\r\n const f538 = BIG_38.times(f5); // 1.31*2^30\r\n const f619 = BIG_ARR[19].times(f6); // 1.31*2^30\r\n const f738 = BIG_38.times(f7); // 1.31*2^30\r\n const f819 = BIG_ARR[19].times(f8); // 1.31*2^30\r\n const f938 = BIG_38.times(f9); // 1.31*2^30\r\n return {\r\n h0: f0\r\n .times(f0)\r\n .plus(f12.times(f938))\r\n .plus(f22.times(f819))\r\n .plus(f32.times(f738))\r\n .plus(f42.times(f619))\r\n .plus(f5.times(f538)),\r\n h1: f02.times(f1).plus(f2.times(f938)).plus(f32.times(f819)).plus(f4.times(f738)).plus(f52.times(f619)),\r\n h2: f02\r\n .times(f2)\r\n .plus(f12.times(f1))\r\n .plus(f32.times(f938))\r\n .plus(f42.times(f819))\r\n .plus(f52.times(f738))\r\n .plus(f6.times(f619)),\r\n h3: f02.times(f3).plus(f12.times(f2)).plus(f4.times(f938)).plus(f52.times(f819)).plus(f6.times(f738)),\r\n h4: f02\r\n .times(f4)\r\n .plus(f12.times(f32))\r\n .plus(f2.times(f2))\r\n .plus(f52.times(f938))\r\n .plus(f62.times(f819))\r\n .plus(f7.times(f738)),\r\n h5: f02.times(f5).plus(f12.times(f4)).plus(f22.times(f3)).plus(f6.times(f938)).plus(f72.times(f819)),\r\n h6: f02\r\n .times(f6)\r\n .plus(f12.times(f52))\r\n .plus(f22.times(f4))\r\n .plus(f32.times(f3))\r\n .plus(f72.times(f938))\r\n .plus(f8.times(f819)),\r\n h7: f02.times(f7).plus(f12.times(f6)).plus(f22.times(f5)).plus(f32.times(f4)).plus(f8.times(f938)),\r\n h8: f02\r\n .times(f8)\r\n .plus(f12.times(f72))\r\n .plus(f22.times(f6))\r\n .plus(f32.times(f52))\r\n .plus(f4.times(f4))\r\n .plus(f9.times(f938)),\r\n h9: f02.times(f9).plus(f12.times(f8)).plus(f22.times(f7)).plus(f32.times(f6)).plus(f42.times(f5))\r\n };\r\n }\r\n /**\r\n * Square2 sets h = 2 * f * f.\r\n *\r\n * Can overlap h with f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.65*2^26,1.65*2^25,1.65*2^26,1.65*2^25,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.01*2^25,1.01*2^24,1.01*2^25,1.01*2^24,etc.\r\n * See fe_mul.c for discussion of implementation strategy.\r\n * @param f The f element.\r\n */\r\n square2(f) {\r\n let { h0, h1, h2, h3, h4, h5, h6, h7, h8, h9 } = this.internalSquare(f);\r\n h0 = h0.plus(h0);\r\n h1 = h1.plus(h1);\r\n h2 = h2.plus(h2);\r\n h3 = h3.plus(h3);\r\n h4 = h4.plus(h4);\r\n h5 = h5.plus(h5);\r\n h6 = h6.plus(h6);\r\n h7 = h7.plus(h7);\r\n h8 = h8.plus(h8);\r\n h9 = h9.plus(h9);\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * Add the elements and store in this.\r\n * @param a The a element.\r\n * @param b The b element.\r\n */\r\n add(a, b) {\r\n this.data[0] = a.data[0] + b.data[0];\r\n this.data[1] = a.data[1] + b.data[1];\r\n this.data[2] = a.data[2] + b.data[2];\r\n this.data[3] = a.data[3] + b.data[3];\r\n this.data[4] = a.data[4] + b.data[4];\r\n this.data[5] = a.data[5] + b.data[5];\r\n this.data[6] = a.data[6] + b.data[6];\r\n this.data[7] = a.data[7] + b.data[7];\r\n this.data[8] = a.data[8] + b.data[8];\r\n this.data[9] = a.data[9] + b.data[9];\r\n }\r\n /**\r\n * Subtract the elements and store in this.\r\n * @param a The a element.\r\n * @param b The b element.\r\n */\r\n sub(a, b) {\r\n this.data[0] = a.data[0] - b.data[0];\r\n this.data[1] = a.data[1] - b.data[1];\r\n this.data[2] = a.data[2] - b.data[2];\r\n this.data[3] = a.data[3] - b.data[3];\r\n this.data[4] = a.data[4] - b.data[4];\r\n this.data[5] = a.data[5] - b.data[5];\r\n this.data[6] = a.data[6] - b.data[6];\r\n this.data[7] = a.data[7] - b.data[7];\r\n this.data[8] = a.data[8] - b.data[8];\r\n this.data[9] = a.data[9] - b.data[9];\r\n }\r\n /**\r\n * Populate from bytes.\r\n * @param bytes The bytes to populate from.\r\n */\r\n fromBytes(bytes) {\r\n const h0 = BigIntHelper.read4(bytes, 0);\r\n const h1 = BigIntHelper.read3(bytes, 4).shiftLeft(BIG_ARR[6]);\r\n const h2 = BigIntHelper.read3(bytes, 7).shiftLeft(BIG_ARR[5]);\r\n const h3 = BigIntHelper.read3(bytes, 10).shiftLeft(BIG_ARR[3]);\r\n const h4 = BigIntHelper.read3(bytes, 13).shiftLeft(BIG_ARR[2]);\r\n const h5 = BigIntHelper.read4(bytes, 16);\r\n const h6 = BigIntHelper.read3(bytes, 20).shiftLeft(BIG_ARR[7]);\r\n const h7 = BigIntHelper.read3(bytes, 23).shiftLeft(BIG_ARR[5]);\r\n const h8 = BigIntHelper.read3(bytes, 26).shiftLeft(BIG_ARR[4]);\r\n const h9 = BigIntHelper.read3(bytes, 29).and(BIG_8388607).shiftLeft(BIG_ARR[2]);\r\n this.combine(h0, h1, h2, h3, h4, h5, h6, h7, h8, h9);\r\n }\r\n /**\r\n * FieldElement.toBytes marshals h to s.\r\n * Preconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n *\r\n * Write p=2^255-19; q=floor(h/p).\r\n * Basic claim: q = floor(2^(-255)(h + 19 2^(-25)h9 + 2^(-1))).\r\n *\r\n * Proof:\r\n * Have |h|<=p so |q|<=1 so |19^2 2^(-255) q|<1/4.\r\n * Also have |h-2^230 h9|<2^230 so |19 2^(-255)(h-2^230 h9)|<1/4.\r\n *\r\n * Write y=2^(-1)-19^2 2^(-255)q-19 2^(-255)(h-2^230 h9).\r\n * Then 0> 25;\r\n q = (this.data[0] + q) >> 26;\r\n q = (this.data[1] + q) >> 25;\r\n q = (this.data[2] + q) >> 26;\r\n q = (this.data[3] + q) >> 25;\r\n q = (this.data[4] + q) >> 26;\r\n q = (this.data[5] + q) >> 25;\r\n q = (this.data[6] + q) >> 26;\r\n q = (this.data[7] + q) >> 25;\r\n q = (this.data[8] + q) >> 26;\r\n q = (this.data[9] + q) >> 25;\r\n // Goal: Output h-(2^255-19)q, which is between 0 and 2^255-20.\r\n this.data[0] += 19 * q;\r\n // Goal: Output h-2^255 q, which is between 0 and 2^255-20.\r\n carry[0] = this.data[0] >> 26;\r\n this.data[1] += carry[0];\r\n this.data[0] -= carry[0] << 26;\r\n carry[1] = this.data[1] >> 25;\r\n this.data[2] += carry[1];\r\n this.data[1] -= carry[1] << 25;\r\n carry[2] = this.data[2] >> 26;\r\n this.data[3] += carry[2];\r\n this.data[2] -= carry[2] << 26;\r\n carry[3] = this.data[3] >> 25;\r\n this.data[4] += carry[3];\r\n this.data[3] -= carry[3] << 25;\r\n carry[4] = this.data[4] >> 26;\r\n this.data[5] += carry[4];\r\n this.data[4] -= carry[4] << 26;\r\n carry[5] = this.data[5] >> 25;\r\n this.data[6] += carry[5];\r\n this.data[5] -= carry[5] << 25;\r\n carry[6] = this.data[6] >> 26;\r\n this.data[7] += carry[6];\r\n this.data[6] -= carry[6] << 26;\r\n carry[7] = this.data[7] >> 25;\r\n this.data[8] += carry[7];\r\n this.data[7] -= carry[7] << 25;\r\n carry[8] = this.data[8] >> 26;\r\n this.data[9] += carry[8];\r\n this.data[8] -= carry[8] << 26;\r\n carry[9] = this.data[9] >> 25;\r\n this.data[9] -= carry[9] << 25;\r\n // h10 = carry9\r\n // Goal: Output h[0]+...+2^255 h10-2^255 q, which is between 0 and 2^255-20.\r\n // Have h[0]+...+2^230 h[9] between 0 and 2^255-1;\r\n // evidently 2^255 h10-2^255 q = 0.\r\n // Goal: Output h[0]+...+2^230 h[9].\r\n bytes[0] = Math.trunc(this.data[0]);\r\n bytes[1] = this.data[0] >> 8;\r\n bytes[2] = this.data[0] >> 16;\r\n bytes[3] = (this.data[0] >> 24) | (this.data[1] << 2);\r\n bytes[4] = this.data[1] >> 6;\r\n bytes[5] = this.data[1] >> 14;\r\n bytes[6] = (this.data[1] >> 22) | (this.data[2] << 3);\r\n bytes[7] = this.data[2] >> 5;\r\n bytes[8] = this.data[2] >> 13;\r\n bytes[9] = (this.data[2] >> 21) | (this.data[3] << 5);\r\n bytes[10] = this.data[3] >> 3;\r\n bytes[11] = this.data[3] >> 11;\r\n bytes[12] = (this.data[3] >> 19) | (this.data[4] << 6);\r\n bytes[13] = this.data[4] >> 2;\r\n bytes[14] = this.data[4] >> 10;\r\n bytes[15] = this.data[4] >> 18;\r\n bytes[16] = Math.trunc(this.data[5]);\r\n bytes[17] = this.data[5] >> 8;\r\n bytes[18] = this.data[5] >> 16;\r\n bytes[19] = (this.data[5] >> 24) | (this.data[6] << 1);\r\n bytes[20] = this.data[6] >> 7;\r\n bytes[21] = this.data[6] >> 15;\r\n bytes[22] = (this.data[6] >> 23) | (this.data[7] << 3);\r\n bytes[23] = this.data[7] >> 5;\r\n bytes[24] = this.data[7] >> 13;\r\n bytes[25] = (this.data[7] >> 21) | (this.data[8] << 4);\r\n bytes[26] = this.data[8] >> 4;\r\n bytes[27] = this.data[8] >> 12;\r\n bytes[28] = (this.data[8] >> 20) | (this.data[9] << 6);\r\n bytes[29] = this.data[9] >> 2;\r\n bytes[30] = this.data[9] >> 10;\r\n bytes[31] = this.data[9] >> 18;\r\n }\r\n /**\r\n * Is the element negative.\r\n * @returns 1 if its negative.\r\n */\r\n isNegative() {\r\n const s = new Uint8Array(32);\r\n this.toBytes(s);\r\n return s[0] & 1;\r\n }\r\n /**\r\n * Is the value non zero.\r\n * @returns 1 if non zero.\r\n */\r\n isNonZero() {\r\n const s = new Uint8Array(32);\r\n this.toBytes(s);\r\n let x = 0;\r\n for (let i = 0; i < s.length; i++) {\r\n x |= s[i];\r\n }\r\n x |= x >> 4;\r\n x |= x >> 2;\r\n x |= x >> 1;\r\n return x & 1;\r\n }\r\n /**\r\n * Neg sets h = -f.\r\n *\r\n * Preconditions:\r\n * |f| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n *\r\n * Postconditions:\r\n * |h| bounded by 1.1*2^25,1.1*2^24,1.1*2^25,1.1*2^24,etc.\r\n */\r\n neg() {\r\n for (let i = 0; i < FieldElement.FIELD_ELEMENT_SIZE; i++) {\r\n this.data[i] = -this.data[i];\r\n }\r\n }\r\n /**\r\n * Invert.\r\n * @param z The elemnt to invert.\r\n */\r\n invert(z) {\r\n const t0 = new FieldElement();\r\n const t1 = new FieldElement();\r\n const t2 = new FieldElement();\r\n const t3 = new FieldElement();\r\n let i;\r\n t0.square(z); // 2^1\r\n t1.square(t0); // 2^2\r\n for (i = 1; i < 2; i++) {\r\n // 2^3\r\n t1.square(t1);\r\n }\r\n t1.mul(z, t1); // 2^3 + 2^0\r\n t0.mul(t0, t1); // 2^3 + 2^1 + 2^0\r\n t2.square(t0); // 2^4 + 2^2 + 2^1\r\n t1.mul(t1, t2); // 2^4 + 2^3 + 2^2 + 2^1 + 2^0\r\n t2.square(t1); // 5,4,3,2,1\r\n for (i = 1; i < 5; i++) {\r\n // 9,8,7,6,5\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1); // 9,8,7,6,5,4,3,2,1,0\r\n t2.square(t1); // 10..1\r\n for (i = 1; i < 10; i++) {\r\n // 19..10\r\n t2.square(t2);\r\n }\r\n t2.mul(t2, t1); // 19..0\r\n t3.square(t2); // 20..1\r\n for (i = 1; i < 20; i++) {\r\n // 39..20\r\n t3.square(t3);\r\n }\r\n t2.mul(t3, t2); // 39..0\r\n t2.square(t2); // 40..1\r\n for (i = 1; i < 10; i++) {\r\n // 49..10\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1); // 49..0\r\n t2.square(t1); // 50..1\r\n for (i = 1; i < 50; i++) {\r\n // 99..50\r\n t2.square(t2);\r\n }\r\n t2.mul(t2, t1); // 99..0\r\n t3.square(t2); // 100..1\r\n for (i = 1; i < 100; i++) {\r\n // 199..100\r\n t3.square(t3);\r\n }\r\n t2.mul(t3, t2); // 199..0\r\n t2.square(t2); // 200..1\r\n for (i = 1; i < 50; i++) {\r\n // 249..50\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1); // 249..0\r\n t1.square(t1); // 250..1\r\n for (i = 1; i < 5; i++) {\r\n // 254..5\r\n t1.square(t1);\r\n }\r\n this.mul(t1, t0); // 254..5,3,1,0\r\n }\r\n /**\r\n * Perform the pow 22523 calculate.\r\n * @param z The element to operate on.\r\n */\r\n pow22523(z) {\r\n const t0 = new FieldElement();\r\n const t1 = new FieldElement();\r\n const t2 = new FieldElement();\r\n let i;\r\n t0.square(z);\r\n // for (i = 1; i < 1; i++) {\r\n // t0.square(t0);\r\n // }\r\n t1.square(t0);\r\n for (i = 1; i < 2; i++) {\r\n t1.square(t1);\r\n }\r\n t1.mul(z, t1);\r\n t0.mul(t0, t1);\r\n t0.square(t0);\r\n // for (i = 1; i < 1; i++) {\r\n // t0.square(t0);\r\n // }\r\n t0.mul(t1, t0);\r\n t1.square(t0);\r\n for (i = 1; i < 5; i++) {\r\n t1.square(t1);\r\n }\r\n t0.mul(t1, t0);\r\n t1.square(t0);\r\n for (i = 1; i < 10; i++) {\r\n t1.square(t1);\r\n }\r\n t1.mul(t1, t0);\r\n t2.square(t1);\r\n for (i = 1; i < 20; i++) {\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1);\r\n t1.square(t1);\r\n for (i = 1; i < 10; i++) {\r\n t1.square(t1);\r\n }\r\n t0.mul(t1, t0);\r\n t1.square(t0);\r\n for (i = 1; i < 50; i++) {\r\n t1.square(t1);\r\n }\r\n t1.mul(t1, t0);\r\n t2.square(t1);\r\n for (i = 1; i < 100; i++) {\r\n t2.square(t2);\r\n }\r\n t1.mul(t2, t1);\r\n t1.square(t1);\r\n for (i = 1; i < 50; i++) {\r\n t1.square(t1);\r\n }\r\n t0.mul(t1, t0);\r\n t0.square(t0);\r\n for (i = 1; i < 2; i++) {\r\n t0.square(t0);\r\n }\r\n this.mul(t0, z);\r\n }\r\n /**\r\n * Replace (f,g) with (g,g) if b == 1;\r\n * replace (f,g) with (f,g) if b == 0.\r\n *\r\n * Preconditions: b in {0,1}.\r\n * @param g The g element.\r\n * @param b The b value.\r\n */\r\n cMove(g, b) {\r\n b = -b;\r\n this.data[0] ^= b & (this.data[0] ^ g.data[0]);\r\n this.data[1] ^= b & (this.data[1] ^ g.data[1]);\r\n this.data[2] ^= b & (this.data[2] ^ g.data[2]);\r\n this.data[3] ^= b & (this.data[3] ^ g.data[3]);\r\n this.data[4] ^= b & (this.data[4] ^ g.data[4]);\r\n this.data[5] ^= b & (this.data[5] ^ g.data[5]);\r\n this.data[6] ^= b & (this.data[6] ^ g.data[6]);\r\n this.data[7] ^= b & (this.data[7] ^ g.data[7]);\r\n this.data[8] ^= b & (this.data[8] ^ g.data[8]);\r\n this.data[9] ^= b & (this.data[9] ^ g.data[9]);\r\n }\r\n /**\r\n * Zero the values.\r\n */\r\n zero() {\r\n this.data.fill(0);\r\n }\r\n /**\r\n * Zero all the values and set the first byte to 1.\r\n */\r\n one() {\r\n this.data.fill(0);\r\n this.data[0] = 1;\r\n }\r\n /**\r\n * Clone the field element.\r\n * @returns The clones element.\r\n */\r\n clone() {\r\n return new FieldElement(this.data);\r\n }\r\n}\r\n/**\r\n * Field element size.\r\n */\r\nFieldElement.FIELD_ELEMENT_SIZE = 10;\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Cached group element.\r\n */\r\nexport class CachedGroupElement {\r\n /**\r\n * Create a new instance of CachedGroupElement.\r\n * @param yPlusX Y + X Element.\r\n * @param yMinusX Y - X Element.\r\n * @param Z Z Element.\r\n * @param T2d T2d Element.\r\n */\r\n constructor(yPlusX, yMinusX, Z, T2d) {\r\n this.yPlusX = yPlusX !== null && yPlusX !== void 0 ? yPlusX : new FieldElement();\r\n this.yMinusX = yMinusX !== null && yMinusX !== void 0 ? yMinusX : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n this.T2d = T2d !== null && T2d !== void 0 ? T2d : new FieldElement();\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\r\n * y^2 where d = -121665/121666.\r\n * CompletedGroupElement: ((X:Z),(Y:T)) satisfying x=X/Z, y=Y/T.\r\n */\r\nexport class CompletedGroupElement {\r\n /**\r\n * Create a new instance of CompletedGroupElement.\r\n * @param X The X element.\r\n * @param Y The Y Element.\r\n * @param Z The Z Element.\r\n * @param T The T Element.\r\n */\r\n constructor(X, Y, Z, T) {\r\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\r\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n this.T = T !== null && T !== void 0 ? T : new FieldElement();\r\n }\r\n /**\r\n * Group Element add.\r\n * @param p The extended group element.\r\n * @param q The cached group element.\r\n */\r\n add(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yPlusX);\r\n this.Y.mul(this.Y, q.yMinusX);\r\n this.T.mul(q.T2d, p.T);\r\n this.X.mul(p.Z, q.Z);\r\n t0.add(this.X, this.X);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.add(t0, this.T);\r\n this.T.sub(t0, this.T);\r\n }\r\n /**\r\n * Group Element substract.\r\n * @param p The p.\r\n * @param q The q.\r\n */\r\n sub(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yMinusX);\r\n this.Y.mul(this.Y, q.yPlusX);\r\n this.T.mul(q.T2d, p.T);\r\n this.X.mul(p.Z, q.Z);\r\n t0.add(this.X, this.X);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.sub(t0, this.T);\r\n this.T.add(t0, this.T);\r\n }\r\n /**\r\n * Mixed add.\r\n * @param p The p.\r\n * @param q The q.\r\n */\r\n mixedAdd(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yPlusX);\r\n this.Y.mul(this.Y, q.yMinusX);\r\n this.T.mul(q.xy2d, p.T);\r\n t0.add(p.Z, p.Z);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.add(t0, this.T);\r\n this.T.sub(t0, this.T);\r\n }\r\n /**\r\n * Mixed subtract.\r\n * @param p The p.\r\n * @param q The q.\r\n */\r\n mixedSub(p, q) {\r\n const t0 = new FieldElement();\r\n this.X.add(p.Y, p.X);\r\n this.Y.sub(p.Y, p.X);\r\n this.Z.mul(this.X, q.yMinusX);\r\n this.Y.mul(this.Y, q.yPlusX);\r\n this.T.mul(q.xy2d, p.T);\r\n t0.add(p.Z, p.Z);\r\n this.X.sub(this.Z, this.Y);\r\n this.Y.add(this.Z, this.Y);\r\n this.Z.sub(t0, this.T);\r\n this.T.add(t0, this.T);\r\n }\r\n /**\r\n * Convert to projective element.\r\n * @param p The projective element to fill.\r\n */\r\n toProjective(p) {\r\n p.X.mul(this.X, this.T);\r\n p.Y.mul(this.Y, this.Z);\r\n p.Z.mul(this.Z, this.T);\r\n }\r\n /**\r\n * Convert to extended element.\r\n * @param e The extended element to fill.\r\n */\r\n toExtended(e) {\r\n e.X.mul(this.X, this.T);\r\n e.Y.mul(this.Y, this.Z);\r\n e.Z.mul(this.Z, this.T);\r\n e.T.mul(this.X, this.Y);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { CONST_BASE } from \"./const.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\r\n * y^2 where d = -121665/121666.\r\n * PreComputedGroupElement: (y+x,y-x,2dxy).\r\n */\r\nexport class PreComputedGroupElement {\r\n /**\r\n * Create a new instance of PreComputedGroupElement.\r\n * @param yPlusX Y + X Element.\r\n * @param yMinusX Y - X Element.\r\n * @param xy2d XY2d Element.\r\n */\r\n constructor(yPlusX, yMinusX, xy2d) {\r\n this.yPlusX = yPlusX !== null && yPlusX !== void 0 ? yPlusX : new FieldElement();\r\n this.yMinusX = yMinusX !== null && yMinusX !== void 0 ? yMinusX : new FieldElement();\r\n this.xy2d = xy2d !== null && xy2d !== void 0 ? xy2d : new FieldElement();\r\n }\r\n /**\r\n * Set the elements to zero.\r\n */\r\n zero() {\r\n this.yPlusX.one();\r\n this.yMinusX.one();\r\n this.xy2d.zero();\r\n }\r\n /**\r\n * CMove the pre computed element.\r\n * @param u The u.\r\n * @param b The b.\r\n */\r\n cMove(u, b) {\r\n this.yPlusX.cMove(u.yPlusX, b);\r\n this.yMinusX.cMove(u.yMinusX, b);\r\n this.xy2d.cMove(u.xy2d, b);\r\n }\r\n /**\r\n * Select point.\r\n * @param pos The position.\r\n * @param b The index.\r\n */\r\n selectPoint(pos, b) {\r\n const minusT = new PreComputedGroupElement();\r\n const bNegative = this.negative(b);\r\n const bAbs = b - ((-bNegative & b) << 1);\r\n this.zero();\r\n for (let i = 0; i < 8; i++) {\r\n this.cMove(CONST_BASE[pos][i], this.equal(bAbs, i + 1));\r\n }\r\n minusT.yPlusX = this.yMinusX.clone();\r\n minusT.yMinusX = this.yPlusX.clone();\r\n minusT.xy2d = this.xy2d.clone();\r\n minusT.xy2d.neg();\r\n this.cMove(minusT, bNegative);\r\n }\r\n /**\r\n * Negative returns 1 if b < 0 and 0 otherwise.\r\n * @param b The b.\r\n * @returns 1 if b < 0 and 0.\r\n */\r\n negative(b) {\r\n return (b >> 31) & 1;\r\n }\r\n /**\r\n * Equal returns 1 if b == c and 0 otherwise, assuming that b and c are\r\n * non-negative.\r\n * @param b The b.\r\n * @param c The c.\r\n * @returns 1 if b == c and 0.\r\n */\r\n equal(b, c) {\r\n let x = (b ^ c) & 0xffffffff;\r\n x--;\r\n return Math.abs(x >> 31);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable array-bracket-newline */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport bigInt from \"big-integer\";\r\nimport { BIG_ARR } from \"./bigIntCommon.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\nimport { PreComputedGroupElement } from \"./preComputedGroupElement.mjs\";\r\n// d is a constant in the Edwards curve equation.\r\nexport const CONST_D = new FieldElement([\r\n -10913610, 13857413, -15372611, 6949391, 114729, -8787816, -6275908, -3247719, -18696448, -12055116\r\n]);\r\n// d2 is 2*d.\r\nexport const CONST_D2 = new FieldElement([\r\n -21827239, -5839606, -30745221, 13898782, 229458, 15978800, -12551817, -6495438, 29715968, 9444199\r\n]);\r\n// SqrtM1 is the square-root of -1 in the field.\r\nexport const CONST_SQRT_M1 = new FieldElement([\r\n -32595792, -7943725, 9377950, 3500415, 12389472, -272473, -25146209, -2005654, 326686, 11406482\r\n]);\r\n// A is a constant in the Montgomery-form of curve25519.\r\nexport const CONST_A = new FieldElement([486662, 0, 0, 0, 0, 0, 0, 0, 0, 0]);\r\n// order is the order of Curve25519 in little-endian form.\r\nexport const CONST_ORDER = [\r\n bigInt(\"5812631A5CF5D3ED\", 16),\r\n bigInt(\"14DEF9DEA2F79CD6\", 16),\r\n BIG_ARR[0],\r\n bigInt(\"1000000000000000\", 16)\r\n];\r\n// bi contains precomputed multiples of the base-point. See the Ed25519 paper\r\n// for a discussion about how these values are used.\r\nexport const CONST_BI = [\r\n new PreComputedGroupElement(new FieldElement([\r\n 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605\r\n ]), new FieldElement([\r\n -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378\r\n ]), new FieldElement([\r\n -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024\r\n ]), new FieldElement([\r\n 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574\r\n ]), new FieldElement([\r\n 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380\r\n ]), new FieldElement([\r\n 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306\r\n ]), new FieldElement([\r\n 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766\r\n ]), new FieldElement([\r\n -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701\r\n ]), new FieldElement([\r\n 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22518993, -6692182, 14201702, -8745502, -23510406, 8844726, 18474211, -1361450, -13062696, 13821877\r\n ]), new FieldElement([\r\n -6455177, -7839871, 3374702, -4740862, -27098617, -10571707, 31655028, -7212327, 18853322, -14220951\r\n ]), new FieldElement([\r\n 4566830, -12963868, -28974889, -12240689, -7602672, -2830569, -8514358, -10431137, 2207753, -3209784\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25154831, -4185821, 29681144, 7868801, -6854661, -9423865, -12437364, -663000, -31111463, -16132436\r\n ]), new FieldElement([\r\n 25576264, -2703214, 7349804, -11814844, 16472782, 9300885, 3844789, 15725684, 171356, 6466918\r\n ]), new FieldElement([\r\n 23103977, 13316479, 9739013, -16149481, 817875, -15038942, 8965339, -14088058, -30714912, 16193877\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -33521811, 3180713, -2394130, 14003687, -16903474, -16270840, 17238398, 4729455, -18074513, 9256800\r\n ]), new FieldElement([\r\n -25182317, -4174131, 32336398, 5036987, -21236817, 11360617, 22616405, 9761698, -19827198, 630305\r\n ]), new FieldElement([\r\n -13720693, 2639453, -24237460, -7406481, 9494427, -5774029, -6554551, -15960994, -2449256, -14291300\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3151181, -5046075, 9282714, 6866145, -31907062, -863023, -18940575, 15033784, 25105118, -7894876\r\n ]), new FieldElement([\r\n -24326370, 15950226, -31801215, -14592823, -11662737, -5090925, 1573892, -2625887, 2198790, -15804619\r\n ]), new FieldElement([\r\n -3099351, 10324967, -2241613, 7453183, -5446979, -2735503, -13812022, -16236442, -32461234, -12290683\r\n ]))\r\n];\r\n// base contains precomputed multiples of the base-point. See the Ed25519 paper\r\n// for a discussion about how these values are used.\r\nexport const CONST_BASE = [\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 25967493, -14356035, 29566456, 3660896, -12694345, 4014787, 27544626, -11754271, -6079156, 2047605\r\n ]), new FieldElement([\r\n -12545711, 934262, -2722910, 3049990, -727428, 9406986, 12720692, 5043384, 19500929, -15469378\r\n ]), new FieldElement([\r\n -8738181, 4489570, 9688441, -14785194, 10184609, -12363380, 29287919, 11864899, -24514362, -4438546\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12815894, -12976347, -21581243, 11784320, -25355658, -2750717, -11717903, -3814571, -358445, -10211303\r\n ]), new FieldElement([\r\n -21703237, 6903825, 27185491, 6451973, -29577724, -9554005, -15616551, 11189268, -26829678, -5319081\r\n ]), new FieldElement([\r\n 26966642, 11152617, 32442495, 15396054, 14353839, -12752335, -3128826, -9541118, -15472047, -4166697\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15636291, -9688557, 24204773, -7912398, 616977, -16685262, 27787600, -14772189, 28944400, -1550024\r\n ]), new FieldElement([\r\n 16568933, 4717097, -11556148, -1102322, 15682896, -11807043, 16354577, -11775962, 7689662, 11199574\r\n ]), new FieldElement([\r\n 30464156, -5976125, -11779434, -15670865, 23220365, 15915852, 7512774, 10017326, -17749093, -9920357\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -17036878, 13921892, 10945806, -6033431, 27105052, -16084379, -28926210, 15006023, 3284568, -6276540\r\n ]), new FieldElement([\r\n 23599295, -8306047, -11193664, -7687416, 13236774, 10506355, 7464579, 9656445, 13059162, 10374397\r\n ]), new FieldElement([\r\n 7798556, 16710257, 3033922, 2874086, 28997861, 2835604, 32406664, -3839045, -641708, -101325\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10861363, 11473154, 27284546, 1981175, -30064349, 12577861, 32867885, 14515107, -15438304, 10819380\r\n ]), new FieldElement([\r\n 4708026, 6336745, 20377586, 9066809, -11272109, 6594696, -25653668, 12483688, -12668491, 5581306\r\n ]), new FieldElement([\r\n 19563160, 16186464, -29386857, 4097519, 10237984, -4348115, 28542350, 13850243, -23678021, -15815942\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15371964, -12862754, 32573250, 4720197, -26436522, 5875511, -19188627, -15224819, -9818940, -12085777\r\n ]), new FieldElement([\r\n -8549212, 109983, 15149363, 2178705, 22900618, 4543417, 3044240, -15689887, 1762328, 14866737\r\n ]), new FieldElement([\r\n -18199695, -15951423, -10473290, 1707278, -17185920, 3916101, -28236412, 3959421, 27914454, 4383652\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5153746, 9909285, 1723747, -2777874, 30523605, 5516873, 19480852, 5230134, -23952439, -15175766\r\n ]), new FieldElement([\r\n -30269007, -3463509, 7665486, 10083793, 28475525, 1649722, 20654025, 16520125, 30598449, 7715701\r\n ]), new FieldElement([\r\n 28881845, 14381568, 9657904, 3680757, -20181635, 7843316, -31400660, 1370708, 29794553, -1409300\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14499471, -2729599, -33191113, -4254652, 28494862, 14271267, 30290735, 10876454, -33154098, 2381726\r\n ]), new FieldElement([\r\n -7195431, -2655363, -14730155, 462251, -27724326, 3941372, -6236617, 3696005, -32300832, 15351955\r\n ]), new FieldElement([\r\n 27431194, 8222322, 16448760, -3907995, -18707002, 11938355, -32961401, -2970515, 29551813, 10109425\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -13657040, -13155431, -31283750, 11777098, 21447386, 6519384, -2378284, -1627556, 10092783, -4764171\r\n ]), new FieldElement([\r\n 27939166, 14210322, 4677035, 16277044, -22964462, -12398139, -32508754, 12005538, -17810127, 12803510\r\n ]), new FieldElement([\r\n 17228999, -15661624, -1233527, 300140, -1224870, -11714777, 30364213, -9038194, 18016357, 4397660\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -10958843, -7690207, 4776341, -14954238, 27850028, -15602212, -26619106, 14544525, -17477504, 982639\r\n ]), new FieldElement([\r\n 29253598, 15796703, -2863982, -9908884, 10057023, 3163536, 7332899, -4120128, -21047696, 9934963\r\n ]), new FieldElement([\r\n 5793303, 16271923, -24131614, -10116404, 29188560, 1206517, -14747930, 4559895, -30123922, -10897950\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -27643952, -11493006, 16282657, -11036493, 28414021, -15012264, 24191034, 4541697, -13338309, 5500568\r\n ]), new FieldElement([\r\n 12650548, -1497113, 9052871, 11355358, -17680037, -8400164, -17430592, 12264343, 10874051, 13524335\r\n ]), new FieldElement([\r\n 25556948, -3045990, 714651, 2510400, 23394682, -10415330, 33119038, 5080568, -22528059, 5376628\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26088264, -4011052, -17013699, -3537628, -6726793, 1920897, -22321305, -9447443, 4535768, 1569007\r\n ]), new FieldElement([\r\n -2255422, 14606630, -21692440, -8039818, 28430649, 8775819, -30494562, 3044290, 31848280, 12543772\r\n ]), new FieldElement([\r\n -22028579, 2943893, -31857513, 6777306, 13784462, -4292203, -27377195, -2062731, 7718482, 14474653\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2385315, 2454213, -22631320, 46603, -4437935, -15680415, 656965, -7236665, 24316168, -5253567\r\n ]), new FieldElement([\r\n 13741529, 10911568, -33233417, -8603737, -20177830, -1033297, 33040651, -13424532, -20729456, 8321686\r\n ]), new FieldElement([\r\n 21060490, -2212744, 15712757, -4336099, 1639040, 10656336, 23845965, -11874838, -9984458, 608372\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13672732, -15087586, -10889693, -7557059, -6036909, 11305547, 1123968, -6780577, 27229399, 23887\r\n ]), new FieldElement([\r\n -23244140, -294205, -11744728, 14712571, -29465699, -2029617, 12797024, -6440308, -1633405, 16678954\r\n ]), new FieldElement([\r\n -29500620, 4770662, -16054387, 14001338, 7830047, 9564805, -1508144, -4795045, -17169265, 4904953\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24059557, 14617003, 19037157, -15039908, 19766093, -14906429, 5169211, 16191880, 2128236, -4326833\r\n ]), new FieldElement([\r\n -16981152, 4124966, -8540610, -10653797, 30336522, -14105247, -29806336, 916033, -6882542, -2986532\r\n ]), new FieldElement([\r\n -22630907, 12419372, -7134229, -7473371, -16478904, 16739175, 285431, 2763829, 15736322, 4143876\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2379352, 11839345, -4110402, -5988665, 11274298, 794957, 212801, -14594663, 23527084, -16458268\r\n ]), new FieldElement([\r\n 33431127, -11130478, -17838966, -15626900, 8909499, 8376530, -32625340, 4087881, -15188911, -14416214\r\n ]), new FieldElement([\r\n 1767683, 7197987, -13205226, -2022635, -13091350, 448826, 5799055, 4357868, -4774191, -16323038\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 6721966, 13833823, -23523388, -1551314, 26354293, -11863321, 23365147, -3949732, 7390890, 2759800\r\n ]), new FieldElement([\r\n 4409041, 2052381, 23373853, 10530217, 7676779, -12885954, 21302353, -4264057, 1244380, -12919645\r\n ]), new FieldElement([\r\n -4421239, 7169619, 4982368, -2957590, 30256825, -2777540, 14086413, 9208236, 15886429, 16489664\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 1996075, 10375649, 14346367, 13311202, -6874135, -16438411, -13693198, 398369, -30606455, -712933\r\n ]), new FieldElement([\r\n -25307465, 9795880, -2777414, 14878809, -33531835, 14780363, 13348553, 12076947, -30836462, 5113182\r\n ]), new FieldElement([\r\n -17770784, 11797796, 31950843, 13929123, -25888302, 12288344, -30341101, -7336386, 13847711, 5387222\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -18582163, -3416217, 17824843, -2340966, 22744343, -10442611, 8763061, 3617786, -19600662, 10370991\r\n ]), new FieldElement([\r\n 20246567, -14369378, 22358229, -543712, 18507283, -10413996, 14554437, -8746092, 32232924, 16763880\r\n ]), new FieldElement([\r\n 9648505, 10094563, 26416693, 14745928, -30374318, -6472621, 11094161, 15689506, 3140038, -16510092\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16160072, 5472695, 31895588, 4744994, 8823515, 10365685, -27224800, 9448613, -28774454, 366295\r\n ]), new FieldElement([\r\n 19153450, 11523972, -11096490, -6503142, -24647631, 5420647, 28344573, 8041113, 719605, 11671788\r\n ]), new FieldElement([\r\n 8678025, 2694440, -6808014, 2517372, 4964326, 11152271, -15432916, -15266516, 27000813, -10195553\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15157904, 7134312, 8639287, -2814877, -7235688, 10421742, 564065, 5336097, 6750977, -14521026\r\n ]), new FieldElement([\r\n 11836410, -3979488, 26297894, 16080799, 23455045, 15735944, 1695823, -8819122, 8169720, 16220347\r\n ]), new FieldElement([\r\n -18115838, 8653647, 17578566, -6092619, -8025777, -16012763, -11144307, -2627664, -5990708, -14166033\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23308498, -10968312, 15213228, -10081214, -30853605, -11050004, 27884329, 2847284, 2655861, 1738395\r\n ]), new FieldElement([\r\n -27537433, -14253021, -25336301, -8002780, -9370762, 8129821, 21651608, -3239336, -19087449, -11005278\r\n ]), new FieldElement([\r\n 1533110, 3437855, 23735889, 459276, 29970501, 11335377, 26030092, 5821408, 10478196, 8544890\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32173121, -16129311, 24896207, 3921497, 22579056, -3410854, 19270449, 12217473, 17789017, -3395995\r\n ]), new FieldElement([\r\n -30552961, -2228401, -15578829, -10147201, 13243889, 517024, 15479401, -3853233, 30460520, 1052596\r\n ]), new FieldElement([\r\n -11614875, 13323618, 32618793, 8175907, -15230173, 12596687, 27491595, -4612359, 3179268, -9478891\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31947069, -14366651, -4640583, -15339921, -15125977, -6039709, -14756777, -16411740, 19072640, -9511060\r\n ]), new FieldElement([\r\n 11685058, 11822410, 3158003, -13952594, 33402194, -4165066, 5977896, -5215017, 473099, 5040608\r\n ]), new FieldElement([\r\n -20290863, 8198642, -27410132, 11602123, 1290375, -2799760, 28326862, 1721092, -19558642, -3131606\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 7881532, 10687937, 7578723, 7738378, -18951012, -2553952, 21820786, 8076149, -27868496, 11538389\r\n ]), new FieldElement([\r\n -19935666, 3899861, 18283497, -6801568, -15728660, -11249211, 8754525, 7446702, -5676054, 5797016\r\n ]), new FieldElement([\r\n -11295600, -3793569, -15782110, -7964573, 12708869, -8456199, 2014099, -9050574, -2369172, -5877341\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22472376, -11568741, -27682020, 1146375, 18956691, 16640559, 1192730, -3714199, 15123619, 10811505\r\n ]), new FieldElement([\r\n 14352098, -3419715, -18942044, 10822655, 32750596, 4699007, -70363, 15776356, -28886779, -11974553\r\n ]), new FieldElement([\r\n -28241164, -8072475, -4978962, -5315317, 29416931, 1847569, -20654173, -16484855, 4714547, -9600655\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15200332, 8368572, 19679101, 15970074, -31872674, 1959451, 24611599, -4543832, -11745876, 12340220\r\n ]), new FieldElement([\r\n 12876937, -10480056, 33134381, 6590940, -6307776, 14872440, 9613953, 8241152, 15370987, 9608631\r\n ]), new FieldElement([\r\n -4143277, -12014408, 8446281, -391603, 4407738, 13629032, -7724868, 15866074, -28210621, -8814099\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 26660628, -15677655, 8393734, 358047, -7401291, 992988, -23904233, 858697, 20571223, 8420556\r\n ]), new FieldElement([\r\n 14620715, 13067227, -15447274, 8264467, 14106269, 15080814, 33531827, 12516406, -21574435, -12476749\r\n ]), new FieldElement([\r\n 236881, 10476226, 57258, -14677024, 6472998, 2466984, 17258519, 7256740, 8791136, 15069930\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 1276410, -9371918, 22949635, -16322807, -23493039, -5702186, 14711875, 4874229, -30663140, -2331391\r\n ]), new FieldElement([\r\n 5855666, 4990204, -13711848, 7294284, -7804282, 1924647, -1423175, -7912378, -33069337, 9234253\r\n ]), new FieldElement([\r\n 20590503, -9018988, 31529744, -7352666, -2706834, 10650548, 31559055, -11609587, 18979186, 13396066\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24474287, 4968103, 22267082, 4407354, 24063882, -8325180, -18816887, 13594782, 33514650, 7021958\r\n ]), new FieldElement([\r\n -11566906, -6565505, -21365085, 15928892, -26158305, 4315421, -25948728, -3916677, -21480480, 12868082\r\n ]), new FieldElement([\r\n -28635013, 13504661, 19988037, -2132761, 21078225, 6443208, -21446107, 2244500, -12455797, -8089383\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -30595528, 13793479, -5852820, 319136, -25723172, -6263899, 33086546, 8957937, -15233648, 5540521\r\n ]), new FieldElement([\r\n -11630176, -11503902, -8119500, -7643073, 2620056, 1022908, -23710744, -1568984, -16128528, -14962807\r\n ]), new FieldElement([\r\n 23152971, 775386, 27395463, 14006635, -9701118, 4649512, 1689819, 892185, -11513277, -15205948\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9770129, 9586738, 26496094, 4324120, 1556511, -3550024, 27453819, 4763127, -19179614, 5867134\r\n ]), new FieldElement([\r\n -32765025, 1927590, 31726409, -4753295, 23962434, -16019500, 27846559, 5931263, -29749703, -16108455\r\n ]), new FieldElement([\r\n 27461885, -2977536, 22380810, 1815854, -23033753, -3031938, 7283490, -15148073, -19526700, 7734629\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -8010264, -9590817, -11120403, 6196038, 29344158, -13430885, 7585295, -3176626, 18549497, 15302069\r\n ]), new FieldElement([\r\n -32658337, -6171222, -7672793, -11051681, 6258878, 13504381, 10458790, -6418461, -8872242, 8424746\r\n ]), new FieldElement([\r\n 24687205, 8613276, -30667046, -3233545, 1863892, -1830544, 19206234, 7134917, -11284482, -828919\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11334899, -9218022, 8025293, 12707519, 17523892, -10476071, 10243738, -14685461, -5066034, 16498837\r\n ]), new FieldElement([\r\n 8911542, 6887158, -9584260, -6958590, 11145641, -9543680, 17303925, -14124238, 6536641, 10543906\r\n ]), new FieldElement([\r\n -28946384, 15479763, -17466835, 568876, -1497683, 11223454, -2669190, -16625574, -27235709, 8876771\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25742899, -12566864, -15649966, -846607, -33026686, -796288, -33481822, 15824474, -604426, -9039817\r\n ]), new FieldElement([\r\n 10330056, 70051, 7957388, -9002667, 9764902, 15609756, 27698697, -4890037, 1657394, 3084098\r\n ]), new FieldElement([\r\n 10477963, -7470260, 12119566, -13250805, 29016247, -5365589, 31280319, 14396151, -30233575, 15272409\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12288309, 3169463, 28813183, 16658753, 25116432, -5630466, -25173957, -12636138, -25014757, 1950504\r\n ]), new FieldElement([\r\n -26180358, 9489187, 11053416, -14746161, -31053720, 5825630, -8384306, -8767532, 15341279, 8373727\r\n ]), new FieldElement([\r\n 28685821, 7759505, -14378516, -12002860, -31971820, 4079242, 298136, -10232602, -2878207, 15190420\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -32932876, 13806336, -14337485, -15794431, -24004620, 10940928, 8669718, 2742393, -26033313, -6875003\r\n ]), new FieldElement([\r\n -1580388, -11729417, -25979658, -11445023, -17411874, -10912854, 9291594, -16247779, -12154742, 6048605\r\n ]), new FieldElement([\r\n -30305315, 14843444, 1539301, 11864366, 20201677, 1900163, 13934231, 5128323, 11213262, 9168384\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26280513, 11007847, 19408960, -940758, -18592965, -4328580, -5088060, -11105150, 20470157, -16398701\r\n ]), new FieldElement([\r\n -23136053, 9282192, 14855179, -15390078, -7362815, -14408560, -22783952, 14461608, 14042978, 5230683\r\n ]), new FieldElement([\r\n 29969567, -2741594, -16711867, -8552442, 9175486, -2468974, 21556951, 3506042, -5933891, -12449708\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3144746, 8744661, 19704003, 4581278, -20430686, 6830683, -21284170, 8971513, -28539189, 15326563\r\n ]), new FieldElement([\r\n -19464629, 10110288, -17262528, -3503892, -23500387, 1355669, -15523050, 15300988, -20514118, 9168260\r\n ]), new FieldElement([\r\n -5353335, 4488613, -23803248, 16314347, 7780487, -15638939, -28948358, 9601605, 33087103, -9011387\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19443170, -15512900, -20797467, -12445323, -29824447, 10229461, -27444329, -15000531, -5996870,\r\n 15664672\r\n ]), new FieldElement([\r\n 23294591, -16632613, -22650781, -8470978, 27844204, 11461195, 13099750, -2460356, 18151676, 13417686\r\n ]), new FieldElement([\r\n -24722913, -4176517, -31150679, 5988919, -26858785, 6685065, 1661597, -12551441, 15271676, -15452665\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 11433042, -13228665, 8239631, -5279517, -1985436, -725718, -18698764, 2167544, -6921301, -13440182\r\n ]), new FieldElement([\r\n -31436171, 15575146, 30436815, 12192228, -22463353, 9395379, -9917708, -8638997, 12215110, 12028277\r\n ]), new FieldElement([\r\n 14098400, 6555944, 23007258, 5757252, -15427832, -12950502, 30123440, 4617780, -16900089, -655628\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4026201, -15240835, 11893168, 13718664, -14809462, 1847385, -15819999, 10154009, 23973261, -12684474\r\n ]), new FieldElement([\r\n -26531820, -3695990, -1908898, 2534301, -31870557, -16550355, 18341390, -11419951, 32013174, -10103539\r\n ]), new FieldElement([\r\n -25479301, 10876443, -11771086, -14625140, -12369567, 1838104, 21911214, 6354752, 4425632, -837822\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -10433389, -14612966, 22229858, -3091047, -13191166, 776729, -17415375, -12020462, 4725005, 14044970\r\n ]), new FieldElement([\r\n 19268650, -7304421, 1555349, 8692754, -21474059, -9910664, 6347390, -1411784, -19522291, -16109756\r\n ]), new FieldElement([\r\n -24864089, 12986008, -10898878, -5558584, -11312371, -148526, 19541418, 8180106, 9282262, 10282508\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26205082, 4428547, -8661196, -13194263, 4098402, -14165257, 15522535, 8372215, 5542595, -10702683\r\n ]), new FieldElement([\r\n -10562541, 14895633, 26814552, -16673850, -17480754, -2489360, -2781891, 6993761, -18093885, 10114655\r\n ]), new FieldElement([\r\n -20107055, -929418, 31422704, 10427861, -7110749, 6150669, -29091755, -11529146, 25953725, -106158\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4234397, -8039292, -9119125, 3046000, 2101609, -12607294, 19390020, 6094296, -3315279, 12831125\r\n ]), new FieldElement([\r\n -15998678, 7578152, 5310217, 14408357, -33548620, -224739, 31575954, 6326196, 7381791, -2421839\r\n ]), new FieldElement([\r\n -20902779, 3296811, 24736065, -16328389, 18374254, 7318640, 6295303, 8082724, -15362489, 12339664\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 27724736, 2291157, 6088201, -14184798, 1792727, 5857634, 13848414, 15768922, 25091167, 14856294\r\n ]), new FieldElement([\r\n -18866652, 8331043, 24373479, 8541013, -701998, -9269457, 12927300, -12695493, -22182473, -9012899\r\n ]), new FieldElement([\r\n -11423429, -5421590, 11632845, 3405020, 30536730, -11674039, -27260765, 13866390, 30146206, 9142070\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 3924129, -15307516, -13817122, -10054960, 12291820, -668366, -27702774, 9326384, -8237858, 4171294\r\n ]), new FieldElement([\r\n -15921940, 16037937, 6713787, 16606682, -21612135, 2790944, 26396185, 3731949, 345228, -5462949\r\n ]), new FieldElement([\r\n -21327538, 13448259, 25284571, 1143661, 20614966, -8849387, 2031539, -12391231, -16253183, -13582083\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31016211, -16722429, 26371392, -14451233, -5027349, 14854137, 17477601, 3842657, 28012650, -16405420\r\n ]), new FieldElement([\r\n -5075835, 9368966, -8562079, -4600902, -15249953, 6970560, -9189873, 16292057, -8867157, 3507940\r\n ]), new FieldElement([\r\n 29439664, 3537914, 23333589, 6997794, -17555561, -11018068, -15209202, -15051267, -9164929, 6580396\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -12185861, -7679788, 16438269, 10826160, -8696817, -6235611, 17860444, -9273846, -2095802, 9304567\r\n ]), new FieldElement([\r\n 20714564, -4336911, 29088195, 7406487, 11426967, -5095705, 14792667, -14608617, 5289421, -477127\r\n ]), new FieldElement([\r\n -16665533, -10650790, -6160345, -13305760, 9192020, -1802462, 17271490, 12349094, 26939669, -3752294\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12889898, 9373458, 31595848, 16374215, 21471720, 13221525, -27283495, -12348559, -3698806, 117887\r\n ]), new FieldElement([\r\n 22263325, -6560050, 3984570, -11174646, -15114008, -566785, 28311253, 5358056, -23319780, 541964\r\n ]), new FieldElement([\r\n 16259219, 3261970, 2309254, -15534474, -16885711, -4581916, 24134070, -16705829, -13337066, -13552195\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9378160, -13140186, -22845982, -12745264, 28198281, -7244098, -2399684, -717351, 690426, 14876244\r\n ]), new FieldElement([\r\n 24977353, -314384, -8223969, -13465086, 28432343, -1176353, -13068804, -12297348, -22380984, 6618999\r\n ]), new FieldElement([\r\n -1538174, 11685646, 12944378, 13682314, -24389511, -14413193, 8044829, -13817328, 32239829, -5652762\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -18603066, 4762990, -926250, 8885304, -28412480, -3187315, 9781647, -10350059, 32779359, 5095274\r\n ]), new FieldElement([\r\n -33008130, -5214506, -32264887, -3685216, 9460461, -9327423, -24601656, 14506724, 21639561, -2630236\r\n ]), new FieldElement([\r\n -16400943, -13112215, 25239338, 15531969, 3987758, -4499318, -1289502, -6863535, 17874574, 558605\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13600129, 10240081, 9171883, 16131053, -20869254, 9599700, 33499487, 5080151, 2085892, 5119761\r\n ]), new FieldElement([\r\n -22205145, -2519528, -16381601, 414691, -25019550, 2170430, 30634760, -8363614, -31999993, -5759884\r\n ]), new FieldElement([\r\n -6845704, 15791202, 8550074, -1312654, 29928809, -12092256, 27534430, -7192145, -22351378, 12961482\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24492060, -9570771, 10368194, 11582341, -23397293, -2245287, 16533930, 8206996, -30194652, -5159638\r\n ]), new FieldElement([\r\n -11121496, -3382234, 2307366, 6362031, -135455, 8868177, -16835630, 7031275, 7589640, 8945490\r\n ]), new FieldElement([\r\n -32152748, 8917967, 6661220, -11677616, -1192060, -15793393, 7251489, -11182180, 24099109, -14456170\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5019558, -7907470, 4244127, -14714356, -26933272, 6453165, -19118182, -13289025, -6231896, -10280736\r\n ]), new FieldElement([\r\n 10853594, 10721687, 26480089, 5861829, -22995819, 1972175, -1866647, -10557898, -3363451, -6441124\r\n ]), new FieldElement([\r\n -17002408, 5906790, 221599, -6563147, 7828208, -13248918, 24362661, -2008168, -13866408, 7421392\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8139927, -6546497, 32257646, -5890546, 30375719, 1886181, -21175108, 15441252, 28826358, -4123029\r\n ]), new FieldElement([\r\n 6267086, 9695052, 7709135, -16603597, -32869068, -1886135, 14795160, -7840124, 13746021, -1742048\r\n ]), new FieldElement([\r\n 28584902, 7787108, -6732942, -15050729, 22846041, -7571236, -3181936, -363524, 4771362, -8419958\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 24949256, 6376279, -27466481, -8174608, -18646154, -9930606, 33543569, -12141695, 3569627, 11342593\r\n ]), new FieldElement([\r\n 26514989, 4740088, 27912651, 3697550, 19331575, -11472339, 6809886, 4608608, 7325975, -14801071\r\n ]), new FieldElement([\r\n -11618399, -14554430, -24321212, 7655128, -1369274, 5214312, -27400540, 10258390, -17646694, -8186692\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11431204, 15823007, 26570245, 14329124, 18029990, 4796082, -31446179, 15580664, 9280358, -3973687\r\n ]), new FieldElement([\r\n -160783, -10326257, -22855316, -4304997, -20861367, -13621002, -32810901, -11181622, -15545091, 4387441\r\n ]), new FieldElement([\r\n -20799378, 12194512, 3937617, -5805892, -27154820, 9340370, -24513992, 8548137, 20617071, -7482001\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -938825, -3930586, -8714311, 16124718, 24603125, -6225393, -13775352, -11875822, 24345683, 10325460\r\n ]), new FieldElement([\r\n -19855277, -1568885, -22202708, 8714034, 14007766, 6928528, 16318175, -1010689, 4766743, 3552007\r\n ]), new FieldElement([\r\n -21751364, -16730916, 1351763, -803421, -4009670, 3950935, 3217514, 14481909, 10988822, -3994762\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15564307, -14311570, 3101243, 5684148, 30446780, -8051356, 12677127, -6505343, -8295852, 13296005\r\n ]), new FieldElement([\r\n -9442290, 6624296, -30298964, -11913677, -4670981, -2057379, 31521204, 9614054, -30000824, 12074674\r\n ]), new FieldElement([\r\n 4771191, -135239, 14290749, -13089852, 27992298, 14998318, -1413936, -1556716, 29832613, -16391035\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 7064884, -7541174, -19161962, -5067537, -18891269, -2912736, 25825242, 5293297, -27122660, 13101590\r\n ]), new FieldElement([\r\n -2298563, 2439670, -7466610, 1719965, -27267541, -16328445, 32512469, -5317593, -30356070, -4190957\r\n ]), new FieldElement([\r\n -30006540, 10162316, -33180176, 3981723, -16482138, -13070044, 14413974, 9515896, 19568978, 9628812\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 33053803, 199357, 15894591, 1583059, 27380243, -4580435, -17838894, -6106839, -6291786, 3437740\r\n ]), new FieldElement([\r\n -18978877, 3884493, 19469877, 12726490, 15913552, 13614290, -22961733, 70104, 7463304, 4176122\r\n ]), new FieldElement([\r\n -27124001, 10659917, 11482427, -16070381, 12771467, -6635117, -32719404, -5322751, 24216882, 5944158\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8894125, 7450974, -2664149, -9765752, -28080517, -12389115, 19345746, 14680796, 11632993, 5847885\r\n ]), new FieldElement([\r\n 26942781, -2315317, 9129564, -4906607, 26024105, 11769399, -11518837, 6367194, -9727230, 4782140\r\n ]), new FieldElement([\r\n 19916461, -4828410, -22910704, -11414391, 25606324, -5972441, 33253853, 8220911, 6358847, -1873857\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 801428, -2081702, 16569428, 11065167, 29875704, 96627, 7908388, -4480480, -13538503, 1387155\r\n ]), new FieldElement([\r\n 19646058, 5720633, -11416706, 12814209, 11607948, 12749789, 14147075, 15156355, -21866831, 11835260\r\n ]), new FieldElement([\r\n 19299512, 1155910, 28703737, 14890794, 2925026, 7269399, 26121523, 15467869, -26560550, 5052483\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -3017432, 10058206, 1980837, 3964243, 22160966, 12322533, -6431123, -12618185, 12228557, -7003677\r\n ]), new FieldElement([\r\n 32944382, 14922211, -22844894, 5188528, 21913450, -8719943, 4001465, 13238564, -6114803, 8653815\r\n ]), new FieldElement([\r\n 22865569, -4652735, 27603668, -12545395, 14348958, 8234005, 24808405, 5719875, 28483275, 2841751\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16420968, -1113305, -327719, -12107856, 21886282, -15552774, -1887966, -315658, 19932058, -12739203\r\n ]), new FieldElement([\r\n -11656086, 10087521, -8864888, -5536143, -19278573, -3055912, 3999228, 13239134, -4777469, -13910208\r\n ]), new FieldElement([\r\n 1382174, -11694719, 17266790, 9194690, -13324356, 9720081, 20403944, 11284705, -14013818, 3093230\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16650921, -11037932, -1064178, 1570629, -8329746, 7352753, -302424, 16271225, -24049421, -6691850\r\n ]), new FieldElement([\r\n -21911077, -5927941, -4611316, -5560156, -31744103, -10785293, 24123614, 15193618, -21652117, -16739389\r\n ]), new FieldElement([\r\n -9935934, -4289447, -25279823, 4372842, 2087473, 10399484, 31870908, 14690798, 17361620, 11864968\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -11307610, 6210372, 13206574, 5806320, -29017692, -13967200, -12331205, -7486601, -25578460, -16240689\r\n ]), new FieldElement([\r\n 14668462, -12270235, 26039039, 15305210, 25515617, 4542480, 10453892, 6577524, 9145645, -6443880\r\n ]), new FieldElement([\r\n 5974874, 3053895, -9433049, -10385191, -31865124, 3225009, -7972642, 3936128, -5652273, -3050304\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30625386, -4729400, -25555961, -12792866, -20484575, 7695099, 17097188, -16303496, -27999779, 1803632\r\n ]), new FieldElement([\r\n -3553091, 9865099, -5228566, 4272701, -5673832, -16689700, 14911344, 12196514, -21405489, 7047412\r\n ]), new FieldElement([\r\n 20093277, 9920966, -11138194, -5343857, 13161587, 12044805, -32856851, 4124601, -32343828, -10257566\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20788824, 14084654, -13531713, 7842147, 19119038, -13822605, 4752377, -8714640, -21679658, 2288038\r\n ]), new FieldElement([\r\n -26819236, -3283715, 29965059, 3039786, -14473765, 2540457, 29457502, 14625692, -24819617, 12570232\r\n ]), new FieldElement([\r\n -1063558, -11551823, 16920318, 12494842, 1278292, -5869109, -21159943, -3498680, -11974704, 4724943\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 17960970, -11775534, -4140968, -9702530, -8876562, -1410617, -12907383, -8659932, -29576300, 1903856\r\n ]), new FieldElement([\r\n 23134274, -14279132, -10681997, -1611936, 20684485, 15770816, -12989750, 3190296, 26955097, 14109738\r\n ]), new FieldElement([\r\n 15308788, 5320727, -30113809, -14318877, 22902008, 7767164, 29425325, -11277562, 31960942, 11934971\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -27395711, 8435796, 4109644, 12222639, -24627868, 14818669, 20638173, 4875028, 10491392, 1379718\r\n ]), new FieldElement([\r\n -13159415, 9197841, 3875503, -8936108, -1383712, -5879801, 33518459, 16176658, 21432314, 12180697\r\n ]), new FieldElement([\r\n -11787308, 11500838, 13787581, -13832590, -22430679, 10140205, 1465425, 12689540, -10301319, -13872883\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 5414091, -15386041, -21007664, 9643570, 12834970, 1186149, -2622916, -1342231, 26128231, 6032912\r\n ]), new FieldElement([\r\n -26337395, -13766162, 32496025, -13653919, 17847801, -12669156, 3604025, 8316894, -25875034, -10437358\r\n ]), new FieldElement([\r\n 3296484, 6223048, 24680646, -12246460, -23052020, 5903205, -8862297, -4639164, 12376617, 3188849\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 29190488, -14659046, 27549113, -1183516, 3520066, -10697301, 32049515, -7309113, -16109234, -9852307\r\n ]), new FieldElement([\r\n -14744486, -9309156, 735818, -598978, -20407687, -5057904, 25246078, -15795669, 18640741, -960977\r\n ]), new FieldElement([\r\n -6928835, -16430795, 10361374, 5642961, 4910474, 12345252, -31638386, -494430, 10530747, 1053335\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -29265967, -14186805, -13538216, -12117373, -19457059, -10655384, -31462369, -2948985, 24018831,\r\n 15026644\r\n ]), new FieldElement([\r\n -22592535, -3145277, -2289276, 5953843, -13440189, 9425631, 25310643, 13003497, -2314791, -15145616\r\n ]), new FieldElement([\r\n -27419985, -603321, -8043984, -1669117, -26092265, 13987819, -27297622, 187899, -23166419, -2531735\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -21744398, -13810475, 1844840, 5021428, -10434399, -15911473, 9716667, 16266922, -5070217, 726099\r\n ]), new FieldElement([\r\n 29370922, -6053998, 7334071, -15342259, 9385287, 2247707, -13661962, -4839461, 30007388, -15823341\r\n ]), new FieldElement([\r\n -936379, 16086691, 23751945, -543318, -1167538, -5189036, 9137109, 730663, 9835848, 4555336\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23376435, 1410446, -22253753, -12899614, 30867635, 15826977, 17693930, 544696, -11985298, 12422646\r\n ]), new FieldElement([\r\n 31117226, -12215734, -13502838, 6561947, -9876867, -12757670, -5118685, -4096706, 29120153, 13924425\r\n ]), new FieldElement([\r\n -17400879, -14233209, 19675799, -2734756, -11006962, -5858820, -9383939, -11317700, 7240931, -237388\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -31361739, -11346780, -15007447, -5856218, -22453340, -12152771, 1222336, 4389483, 3293637, -15551743\r\n ]), new FieldElement([\r\n -16684801, -14444245, 11038544, 11054958, -13801175, -3338533, -24319580, 7733547, 12796905, -6335822\r\n ]), new FieldElement([\r\n -8759414, -10817836, -25418864, 10783769, -30615557, -9746811, -28253339, 3647836, 3222231, -11160462\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 18606113, 1693100, -25448386, -15170272, 4112353, 10045021, 23603893, -2048234, -7550776, 2484985\r\n ]), new FieldElement([\r\n 9255317, -3131197, -12156162, -1004256, 13098013, -9214866, 16377220, -2102812, -19802075, -3034702\r\n ]), new FieldElement([\r\n -22729289, 7496160, -5742199, 11329249, 19991973, -3347502, -31718148, 9936966, -30097688, -10618797\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21878590, -5001297, 4338336, 13643897, -3036865, 13160960, 19708896, 5415497, -7360503, -4109293\r\n ]), new FieldElement([\r\n 27736861, 10103576, 12500508, 8502413, -3413016, -9633558, 10436918, -1550276, -23659143, -8132100\r\n ]), new FieldElement([\r\n 19492550, -12104365, -29681976, -852630, -3208171, 12403437, 30066266, 8367329, 13243957, 8709688\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 12015105, 2801261, 28198131, 10151021, 24818120, -4743133, -11194191, -5645734, 5150968, 7274186\r\n ]), new FieldElement([\r\n 2831366, -12492146, 1478975, 6122054, 23825128, -12733586, 31097299, 6083058, 31021603, -9793610\r\n ]), new FieldElement([\r\n -2529932, -2229646, 445613, 10720828, -13849527, -11505937, -23507731, 16354465, 15067285, -14147707\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 7840942, 14037873, -33364863, 15934016, -728213, -3642706, 21403988, 1057586, -19379462, -12403220\r\n ]), new FieldElement([\r\n 915865, -16469274, 15608285, -8789130, -24357026, 6060030, -17371319, 8410997, -7220461, 16527025\r\n ]), new FieldElement([\r\n 32922597, -556987, 20336074, -16184568, 10903705, -5384487, 16957574, 52992, 23834301, 6588044\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32752030, 11232950, 3381995, -8714866, 22652988, -10744103, 17159699, 16689107, -20314580, -1305992\r\n ]), new FieldElement([\r\n -4689649, 9166776, -25710296, -10847306, 11576752, 12733943, 7924251, -2752281, 1976123, -7249027\r\n ]), new FieldElement([\r\n 21251222, 16309901, -2983015, -6783122, 30810597, 12967303, 156041, -3371252, 12331345, -8237197\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8651614, -4477032, -16085636, -4996994, 13002507, 2950805, 29054427, -5106970, 10008136, -4667901\r\n ]), new FieldElement([\r\n 31486080, 15114593, -14261250, 12951354, 14369431, -7387845, 16347321, -13662089, 8684155, -10532952\r\n ]), new FieldElement([\r\n 19443825, 11385320, 24468943, -9659068, -23919258, 2187569, -26263207, -6086921, 31316348, 14219878\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28594490, 1193785, 32245219, 11392485, 31092169, 15722801, 27146014, 6992409, 29126555, 9207390\r\n ]), new FieldElement([\r\n 32382935, 1110093, 18477781, 11028262, -27411763, -7548111, -4980517, 10843782, -7957600, -14435730\r\n ]), new FieldElement([\r\n 2814918, 7836403, 27519878, -7868156, -20894015, -11553689, -21494559, 8550130, 28346258, 1994730\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19578299, 8085545, -14000519, -3948622, 2785838, -16231307, -19516951, 7174894, 22628102, 8115180\r\n ]), new FieldElement([\r\n -30405132, 955511, -11133838, -15078069, -32447087, -13278079, -25651578, 3317160, -9943017, 930272\r\n ]), new FieldElement([\r\n -15303681, -6833769, 28856490, 1357446, 23421993, 1057177, 24091212, -1388970, -22765376, -10650715\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22751231, -5303997, -12907607, -12768866, -15811511, -7797053, -14839018, -16554220, -1867018, 8398970\r\n ]), new FieldElement([\r\n -31969310, 2106403, -4736360, 1362501, 12813763, 16200670, 22981545, -6291273, 18009408, -15772772\r\n ]), new FieldElement([\r\n -17220923, -9545221, -27784654, 14166835, 29815394, 7444469, 29551787, -3727419, 19288549, 1325865\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15100157, -15835752, -23923978, -1005098, -26450192, 15509408, 12376730, -3479146, 33166107, -8042750\r\n ]), new FieldElement([\r\n 20909231, 13023121, -9209752, 16251778, -5778415, -8094914, 12412151, 10018715, 2213263, -13878373\r\n ]), new FieldElement([\r\n 32529814, -11074689, 30361439, -16689753, -9135940, 1513226, 22922121, 6382134, -5766928, 8371348\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 9923462, 11271500, 12616794, 3544722, -29998368, -1721626, 12891687, -8193132, -26442943, 10486144\r\n ]), new FieldElement([\r\n -22597207, -7012665, 8587003, -8257861, 4084309, -12970062, 361726, 2610596, -23921530, -11455195\r\n ]), new FieldElement([\r\n 5408411, -1136691, -4969122, 10561668, 24145918, 14240566, 31319731, -4235541, 19985175, -3436086\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13994457, 16616821, 14549246, 3341099, 32155958, 13648976, -17577068, 8849297, 65030, 8370684\r\n ]), new FieldElement([\r\n -8320926, -12049626, 31204563, 5839400, -20627288, -1057277, -19442942, 6922164, 12743482, -9800518\r\n ]), new FieldElement([\r\n -2361371, 12678785, 28815050, 4759974, -23893047, 4884717, 23783145, 11038569, 18800704, 255233\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -5269658, -1773886, 13957886, 7990715, 23132995, 728773, 13393847, 9066957, 19258688, -14753793\r\n ]), new FieldElement([\r\n -2936654, -10827535, -10432089, 14516793, -3640786, 4372541, -31934921, 2209390, -1524053, 2055794\r\n ]), new FieldElement([\r\n 580882, 16705327, 5468415, -2683018, -30926419, -14696000, -7203346, -8994389, -30021019, 7394435\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 23838809, 1822728, -15738443, 15242727, 8318092, -3733104, -21672180, -3492205, -4821741, 14799921\r\n ]), new FieldElement([\r\n 13345610, 9759151, 3371034, -16137791, 16353039, 8577942, 31129804, 13496856, -9056018, 7402518\r\n ]), new FieldElement([\r\n 2286874, -4435931, -20042458, -2008336, -13696227, 5038122, 11006906, -15760352, 8205061, 1607563\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14414086, -8002132, 3331830, -3208217, 22249151, -5594188, 18364661, -2906958, 30019587, -9029278\r\n ]), new FieldElement([\r\n -27688051, 1585953, -10775053, 931069, -29120221, -11002319, -14410829, 12029093, 9944378, 8024\r\n ]), new FieldElement([\r\n 4368715, -3709630, 29874200, -15022983, -20230386, -11410704, -16114594, -999085, -8142388, 5640030\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10299610, 13746483, 11661824, 16234854, 7630238, 5998374, 9809887, -16694564, 15219798, -14327783\r\n ]), new FieldElement([\r\n 27425505, -5719081, 3055006, 10660664, 23458024, 595578, -15398605, -1173195, -18342183, 9742717\r\n ]), new FieldElement([\r\n 6744077, 2427284, 26042789, 2720740, -847906, 1118974, 32324614, 7406442, 12420155, 1994844\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14012521, -5024720, -18384453, -9578469, -26485342, -3936439, -13033478, -10909803, 24319929, -6446333\r\n ]), new FieldElement([\r\n 16412690, -4507367, 10772641, 15929391, -17068788, -4658621, 10555945, -10484049, -30102368, -4739048\r\n ]), new FieldElement([\r\n 22397382, -7767684, -9293161, -12792868, 17166287, -9755136, -27333065, 6199366, 21880021, -12250760\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4283307, 5368523, -31117018, 8163389, -30323063, 3209128, 16557151, 8890729, 8840445, 4957760\r\n ]), new FieldElement([\r\n -15447727, 709327, -6919446, -10870178, -29777922, 6522332, -21720181, 12130072, -14796503, 5005757\r\n ]), new FieldElement([\r\n -2114751, -14308128, 23019042, 15765735, -25269683, 6002752, 10183197, -13239326, -16395286, -2176112\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -19025756, 1632005, 13466291, -7995100, -23640451, 16573537, -32013908, -3057104, 22208662, 2000468\r\n ]), new FieldElement([\r\n 3065073, -1412761, -25598674, -361432, -17683065, -5703415, -8164212, 11248527, -3691214, -7414184\r\n ]), new FieldElement([\r\n 10379208, -6045554, 8877319, 1473647, -29291284, -12507580, 16690915, 2553332, -3132688, 16400289\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15716668, 1254266, -18472690, 7446274, -8448918, 6344164, -22097271, -7285580, 26894937, 9132066\r\n ]), new FieldElement([\r\n 24158887, 12938817, 11085297, -8177598, -28063478, -4457083, -30576463, 64452, -6817084, -2692882\r\n ]), new FieldElement([\r\n 13488534, 7794716, 22236231, 5989356, 25426474, -12578208, 2350710, -3418511, -4688006, 2364226\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16335052, 9132434, 25640582, 6678888, 1725628, 8517937, -11807024, -11697457, 15445875, -7798101\r\n ]), new FieldElement([\r\n 29004207, -7867081, 28661402, -640412, -12794003, -7943086, 31863255, -4135540, -278050, -15759279\r\n ]), new FieldElement([\r\n -6122061, -14866665, -28614905, 14569919, -10857999, -3591829, 10343412, -6976290, -29828287, -10815811\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 27081650, 3463984, 14099042, -4517604, 1616303, -6205604, 29542636, 15372179, 17293797, 960709\r\n ]), new FieldElement([\r\n 20263915, 11434237, -5765435, 11236810, 13505955, -10857102, -16111345, 6493122, -19384511, 7639714\r\n ]), new FieldElement([\r\n -2830798, -14839232, 25403038, -8215196, -8317012, -16173699, 18006287, -16043750, 29994677, -15808121\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9769828, 5202651, -24157398, -13631392, -28051003, -11561624, -24613141, -13860782, -31184575, 709464\r\n ]), new FieldElement([\r\n 12286395, 13076066, -21775189, -1176622, -25003198, 4057652, -32018128, -8890874, 16102007, 13205847\r\n ]), new FieldElement([\r\n 13733362, 5599946, 10557076, 3195751, -5557991, 8536970, -25540170, 8525972, 10151379, 10394400\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 4024660, -16137551, 22436262, 12276534, -9099015, -2686099, 19698229, 11743039, -33302334, 8934414\r\n ]), new FieldElement([\r\n -15879800, -4525240, -8580747, -2934061, 14634845, -698278, -9449077, 3137094, -11536886, 11721158\r\n ]), new FieldElement([\r\n 17555939, -5013938, 8268606, 2331751, -22738815, 9761013, 9319229, 8835153, -9205489, -1280045\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -461409, -7830014, 20614118, 16688288, -7514766, -4807119, 22300304, 505429, 6108462, -6183415\r\n ]), new FieldElement([\r\n -5070281, 12367917, -30663534, 3234473, 32617080, -8422642, 29880583, -13483331, -26898490, -7867459\r\n ]), new FieldElement([\r\n -31975283, 5726539, 26934134, 10237677, -3173717, -605053, 24199304, 3795095, 7592688, -14992079\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21594432, -14964228, 17466408, -4077222, 32537084, 2739898, 6407723, 12018833, -28256052, 4298412\r\n ]), new FieldElement([\r\n -20650503, -11961496, -27236275, 570498, 3767144, -1717540, 13891942, -1569194, 13717174, 10805743\r\n ]), new FieldElement([\r\n -14676630, -15644296, 15287174, 11927123, 24177847, -8175568, -796431, 14860609, -26938930, -5863836\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 12962541, 5311799, -10060768, 11658280, 18855286, -7954201, 13286263, -12808704, -4381056, 9882022\r\n ]), new FieldElement([\r\n 18512079, 11319350, -20123124, 15090309, 18818594, 5271736, -22727904, 3666879, -23967430, -3299429\r\n ]), new FieldElement([\r\n -6789020, -3146043, 16192429, 13241070, 15898607, -14206114, -10084880, -6661110, -2403099, 5276065\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30169808, -5317648, 26306206, -11750859, 27814964, 7069267, 7152851, 3684982, 1449224, 13082861\r\n ]), new FieldElement([\r\n 10342826, 3098505, 2119311, 193222, 25702612, 12233820, 23697382, 15056736, -21016438, -8202000\r\n ]), new FieldElement([\r\n -33150110, 3261608, 22745853, 7948688, 19370557, -15177665, -26171976, 6482814, -10300080, -11060101\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32869458, -5408545, 25609743, 15678670, -10687769, -15471071, 26112421, 2521008, -22664288, 6904815\r\n ]), new FieldElement([\r\n 29506923, 4457497, 3377935, -9796444, -30510046, 12935080, 1561737, 3841096, -29003639, -6657642\r\n ]), new FieldElement([\r\n 10340844, -6630377, -18656632, -2278430, 12621151, -13339055, 30878497, -11824370, -25584551, 5181966\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 25940115, -12658025, 17324188, -10307374, -8671468, 15029094, 24396252, -16450922, -2322852, -12388574\r\n ]), new FieldElement([\r\n -21765684, 9916823, -1300409, 4079498, -1028346, 11909559, 1782390, 12641087, 20603771, -6561742\r\n ]), new FieldElement([\r\n -18882287, -11673380, 24849422, 11501709, 13161720, -4768874, 1925523, 11914390, 4662781, 7820689\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12241050, -425982, 8132691, 9393934, 32846760, -1599620, 29749456, 12172924, 16136752, 15264020\r\n ]), new FieldElement([\r\n -10349955, -14680563, -8211979, 2330220, -17662549, -14545780, 10658213, 6671822, 19012087, 3772772\r\n ]), new FieldElement([\r\n 3753511, -3421066, 10617074, 2028709, 14841030, -6721664, 28718732, -15762884, 20527771, 12988982\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -14822485, -5797269, -3707987, 12689773, -898983, -10914866, -24183046, -10564943, 3299665, -12424953\r\n ]), new FieldElement([\r\n -16777703, -15253301, -9642417, 4978983, 3308785, 8755439, 6943197, 6461331, -25583147, 8991218\r\n ]), new FieldElement([\r\n -17226263, 1816362, -1673288, -6086439, 31783888, -8175991, -32948145, 7417950, -30242287, 1507265\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 29692663, 6829891, -10498800, 4334896, 20945975, -11906496, -28887608, 8209391, 14606362, -10647073\r\n ]), new FieldElement([\r\n -3481570, 8707081, 32188102, 5672294, 22096700, 1711240, -33020695, 9761487, 4170404, -2085325\r\n ]), new FieldElement([\r\n -11587470, 14855945, -4127778, -1531857, -26649089, 15084046, 22186522, 16002000, -14276837, -8400798\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4811456, 13761029, -31703877, -2483919, -3312471, 7869047, -7113572, -9620092, 13240845, 10965870\r\n ]), new FieldElement([\r\n -7742563, -8256762, -14768334, -13656260, -23232383, 12387166, 4498947, 14147411, 29514390, 4302863\r\n ]), new FieldElement([\r\n -13413405, -12407859, 20757302, -13801832, 14785143, 8976368, -5061276, -2144373, 17846988, -13971927\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -2244452, -754728, -4597030, -1066309, -6247172, 1455299, -21647728, -9214789, -5222701, 12650267\r\n ]), new FieldElement([\r\n -9906797, -16070310, 21134160, 12198166, -27064575, 708126, 387813, 13770293, -19134326, 10958663\r\n ]), new FieldElement([\r\n 22470984, 12369526, 23446014, -5441109, -21520802, -9698723, -11772496, -11574455, -25083830, 4271862\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25169565, -10053642, -19909332, 15361595, -5984358, 2159192, 75375, -4278529, -32526221, 8469673\r\n ]), new FieldElement([\r\n 15854970, 4148314, -8893890, 7259002, 11666551, 13824734, -30531198, 2697372, 24154791, -9460943\r\n ]), new FieldElement([\r\n 15446137, -15806644, 29759747, 14019369, 30811221, -9610191, -31582008, 12840104, 24913809, 9815020\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4709286, -5614269, -31841498, -12288893, -14443537, 10799414, -9103676, 13438769, 18735128, 9466238\r\n ]), new FieldElement([\r\n 11933045, 9281483, 5081055, -5183824, -2628162, -4905629, -7727821, -10896103, -22728655, 16199064\r\n ]), new FieldElement([\r\n 14576810, 379472, -26786533, -8317236, -29426508, -10812974, -102766, 1876699, 30801119, 2164795\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15995086, 3199873, 13672555, 13712240, -19378835, -4647646, -13081610, -15496269, -13492807, 1268052\r\n ]), new FieldElement([\r\n -10290614, -3659039, -3286592, 10948818, 23037027, 3794475, -3470338, -12600221, -17055369, 3565904\r\n ]), new FieldElement([\r\n 29210088, -9419337, -5919792, -4952785, 10834811, -13327726, -16512102, -10820713, -27162222, -14030531\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -13161890, 15508588, 16663704, -8156150, -28349942, 9019123, -29183421, -3769423, 2244111, -14001979\r\n ]), new FieldElement([\r\n -5152875, -3800936, -9306475, -6071583, 16243069, 14684434, -25673088, -16180800, 13491506, 4641841\r\n ]), new FieldElement([\r\n 10813417, 643330, -19188515, -728916, 30292062, -16600078, 27548447, -7721242, 14476989, -12767431\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10292079, 9984945, 6481436, 8279905, -7251514, 7032743, 27282937, -1644259, -27912810, 12651324\r\n ]), new FieldElement([\r\n -31185513, -813383, 22271204, 11835308, 10201545, 15351028, 17099662, 3988035, 21721536, -3148940\r\n ]), new FieldElement([\r\n 10202177, -6545839, -31373232, -9574638, -32150642, -8119683, -12906320, 3852694, 13216206, 14842320\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15815640, -10601066, -6538952, -7258995, -6984659, -6581778, -31500847, 13765824, -27434397, 9900184\r\n ]), new FieldElement([\r\n 14465505, -13833331, -32133984, -14738873, -27443187, 12990492, 33046193, 15796406, -7051866, -8040114\r\n ]), new FieldElement([\r\n 30924417, -8279620, 6359016, -12816335, 16508377, 9071735, -25488601, 15413635, 9524356, -7018878\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12274201, -13175547, 32627641, -1785326, 6736625, 13267305, 5237659, -5109483, 15663516, 4035784\r\n ]), new FieldElement([\r\n -2951309, 8903985, 17349946, 601635, -16432815, -4612556, -13732739, -15889334, -22258478, 4659091\r\n ]), new FieldElement([\r\n -16916263, -4952973, -30393711, -15158821, 20774812, 15897498, 5736189, 15026997, -2178256, -13455585\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -8858980, -2219056, 28571666, -10155518, -474467, -10105698, -3801496, 278095, 23440562, -290208\r\n ]), new FieldElement([\r\n 10226241, -5928702, 15139956, 120818, -14867693, 5218603, 32937275, 11551483, -16571960, -7442864\r\n ]), new FieldElement([\r\n 17932739, -12437276, -24039557, 10749060, 11316803, 7535897, 22503767, 5561594, -3646624, 3898661\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 7749907, -969567, -16339731, -16464, -25018111, 15122143, -1573531, 7152530, 21831162, 1245233\r\n ]), new FieldElement([\r\n 26958459, -14658026, 4314586, 8346991, -5677764, 11960072, -32589295, -620035, -30402091, -16716212\r\n ]), new FieldElement([\r\n -12165896, 9166947, 33491384, 13673479, 29787085, 13096535, 6280834, 14587357, -22338025, 13987525\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24349909, 7778775, 21116000, 15572597, -4833266, -5357778, -4300898, -5124639, -7469781, -2858068\r\n ]), new FieldElement([\r\n 9681908, -6737123, -31951644, 13591838, -6883821, 386950, 31622781, 6439245, -14581012, 4091397\r\n ]), new FieldElement([\r\n -8426427, 1470727, -28109679, -1596990, 3978627, -5123623, -19622683, 12092163, 29077877, -14741988\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 5269168, -6859726, -13230211, -8020715, 25932563, 1763552, -5606110, -5505881, -20017847, 2357889\r\n ]), new FieldElement([\r\n 32264008, -15407652, -5387735, -1160093, -2091322, -3946900, 23104804, -12869908, 5727338, 189038\r\n ]), new FieldElement([\r\n 14609123, -8954470, -6000566, -16622781, -14577387, -7743898, -26745169, 10942115, -25888931, -14884697\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 20513500, 5557931, -15604613, 7829531, 26413943, -2019404, -21378968, 7471781, 13913677, -5137875\r\n ]), new FieldElement([\r\n -25574376, 11967826, 29233242, 12948236, -6754465, 4713227, -8940970, 14059180, 12878652, 8511905\r\n ]), new FieldElement([\r\n -25656801, 3393631, -2955415, -7075526, -2250709, 9366908, -30223418, 6812974, 5568676, -3127656\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11630004, 12144454, 2116339, 13606037, 27378885, 15676917, -17408753, -13504373, -14395196, 8070818\r\n ]), new FieldElement([\r\n 27117696, -10007378, -31282771, -5570088, 1127282, 12772488, -29845906, 10483306, -11552749, -1028714\r\n ]), new FieldElement([\r\n 10637467, -5688064, 5674781, 1072708, -26343588, -6982302, -1683975, 9177853, -27493162, 15431203\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 20525145, 10892566, -12742472, 12779443, -29493034, 16150075, -28240519, 14943142, -15056790, -7935931\r\n ]), new FieldElement([\r\n -30024462, 5626926, -551567, -9981087, 753598, 11981191, 25244767, -3239766, -3356550, 9594024\r\n ]), new FieldElement([\r\n -23752644, 2636870, -5163910, -10103818, 585134, 7877383, 11345683, -6492290, 13352335, -10977084\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -1931799, -5407458, 3304649, -12884869, 17015806, -4877091, -29783850, -7752482, -13215537, -319204\r\n ]), new FieldElement([\r\n 20239939, 6607058, 6203985, 3483793, -18386976, -779229, -20723742, 15077870, -22750759, 14523817\r\n ]), new FieldElement([\r\n 27406042, -6041657, 27423596, -4497394, 4996214, 10002360, -28842031, -4545494, -30172742, -4805667\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 11374242, 12660715, 17861383, -12540833, 10935568, 1099227, -13886076, -9091740, -27727044, 11358504\r\n ]), new FieldElement([\r\n -12730809, 10311867, 1510375, 10778093, -2119455, -9145702, 32676003, 11149336, -26123651, 4985768\r\n ]), new FieldElement([\r\n -19096303, 341147, -6197485, -239033, 15756973, -8796662, -983043, 13794114, -19414307, -15621255\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 6490081, 11940286, 25495923, -7726360, 8668373, -8751316, 3367603, 6970005, -1691065, -9004790\r\n ]), new FieldElement([\r\n 1656497, 13457317, 15370807, 6364910, 13605745, 8362338, -19174622, -5475723, -16796596, -5031438\r\n ]), new FieldElement([\r\n -22273315, -13524424, -64685, -4334223, -18605636, -10921968, -20571065, -7007978, -99853, -10237333\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 17747465, 10039260, 19368299, -4050591, -20630635, -16041286, 31992683, -15857976, -29260363, -5511971\r\n ]), new FieldElement([\r\n 31932027, -4986141, -19612382, 16366580, 22023614, 88450, 11371999, -3744247, 4882242, -10626905\r\n ]), new FieldElement([\r\n 29796507, 37186, 19818052, 10115756, -11829032, 3352736, 18551198, 3272828, -5190932, -4162409\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12501286, 4044383, -8612957, -13392385, -32430052, 5136599, -19230378, -3529697, 330070, -3659409\r\n ]), new FieldElement([\r\n 6384877, 2899513, 17807477, 7663917, -2358888, 12363165, 25366522, -8573892, -271295, 12071499\r\n ]), new FieldElement([\r\n -8365515, -4042521, 25133448, -4517355, -6211027, 2265927, -32769618, 1936675, -5159697, 3829363\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 28425966, -5835433, -577090, -4697198, -14217555, 6870930, 7921550, -6567787, 26333140, 14267664\r\n ]), new FieldElement([\r\n -11067219, 11871231, 27385719, -10559544, -4585914, -11189312, 10004786, -8709488, -21761224, 8930324\r\n ]), new FieldElement([\r\n -21197785, -16396035, 25654216, -1725397, 12282012, 11008919, 1541940, 4757911, -26491501, -16408940\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 13537262, -7759490, -20604840, 10961927, -5922820, -13218065, -13156584, 6217254, -15943699, 13814990\r\n ]), new FieldElement([\r\n -17422573, 15157790, 18705543, 29619, 24409717, -260476, 27361681, 9257833, -1956526, -1776914\r\n ]), new FieldElement([\r\n -25045300, -10191966, 15366585, 15166509, -13105086, 8423556, -29171540, 12361135, -18685978, 4578290\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24579768, 3711570, 1342322, -11180126, -27005135, 14124956, -22544529, 14074919, 21964432, 8235257\r\n ]), new FieldElement([\r\n -6528613, -2411497, 9442966, -5925588, 12025640, -1487420, -2981514, -1669206, 13006806, 2355433\r\n ]), new FieldElement([\r\n -16304899, -13605259, -6632427, -5142349, 16974359, -10911083, 27202044, 1719366, 1141648, -12796236\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12863944, -13219986, -8318266, -11018091, -6810145, -4843894, 13475066, -3133972, 32674895, 13715045\r\n ]), new FieldElement([\r\n 11423335, -5468059, 32344216, 8962751, 24989809, 9241752, -13265253, 16086212, -28740881, -15642093\r\n ]), new FieldElement([\r\n -1409668, 12530728, -6368726, 10847387, 19531186, -14132160, -11709148, 7791794, -27245943, 4383347\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -28970898, 5271447, -1266009, -9736989, -12455236, 16732599, -4862407, -4906449, 27193557, 6245191\r\n ]), new FieldElement([\r\n -15193956, 5362278, -1783893, 2695834, 4960227, 12840725, 23061898, 3260492, 22510453, 8577507\r\n ]), new FieldElement([\r\n -12632451, 11257346, -32692994, 13548177, -721004, 10879011, 31168030, 13952092, -29571492, -3635906\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 3877321, -9572739, 32416692, 5405324, -11004407, -13656635, 3759769, 11935320, 5611860, 8164018\r\n ]), new FieldElement([\r\n -16275802, 14667797, 15906460, 12155291, -22111149, -9039718, 32003002, -8832289, 5773085, -8422109\r\n ]), new FieldElement([\r\n -23788118, -8254300, 1950875, 8937633, 18686727, 16459170, -905725, 12376320, 31632953, 190926\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24593607, -16138885, -8423991, 13378746, 14162407, 6901328, -8288749, 4508564, -25341555, -3627528\r\n ]), new FieldElement([\r\n 8884438, -5884009, 6023974, 10104341, -6881569, -4941533, 18722941, -14786005, -1672488, 827625\r\n ]), new FieldElement([\r\n -32720583, -16289296, -32503547, 7101210, 13354605, 2659080, -1800575, -14108036, -24878478, 1541286\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2901347, -1117687, 3880376, -10059388, -17620940, -3612781, -21802117, -3567481, 20456845, -1885033\r\n ]), new FieldElement([\r\n 27019610, 12299467, -13658288, -1603234, -12861660, -4861471, -19540150, -5016058, 29439641, 15138866\r\n ]), new FieldElement([\r\n 21536104, -6626420, -32447818, -10690208, -22408077, 5175814, -5420040, -16361163, 7779328, 109896\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30279744, 14648750, -8044871, 6425558, 13639621, -743509, 28698390, 12180118, 23177719, -554075\r\n ]), new FieldElement([\r\n 26572847, 3405927, -31701700, 12890905, -19265668, 5335866, -6493768, 2378492, 4439158, -13279347\r\n ]), new FieldElement([\r\n -22716706, 3489070, -9225266, -332753, 18875722, -1140095, 14819434, -12731527, -17717757, -5461437\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -5056483, 16566551, 15953661, 3767752, -10436499, 15627060, -820954, 2177225, 8550082, -15114165\r\n ]), new FieldElement([\r\n -18473302, 16596775, -381660, 15663611, 22860960, 15585581, -27844109, -3582739, -23260460, -8428588\r\n ]), new FieldElement([\r\n -32480551, 15707275, -8205912, -5652081, 29464558, 2713815, -22725137, 15860482, -21902570, 1494193\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19562091, -14087393, -25583872, -9299552, 13127842, 759709, 21923482, 16529112, 8742704, 12967017\r\n ]), new FieldElement([\r\n -28464899, 1553205, 32536856, -10473729, -24691605, -406174, -8914625, -2933896, -29903758, 15553883\r\n ]), new FieldElement([\r\n 21877909, 3230008, 9881174, 10539357, -4797115, 2841332, 11543572, 14513274, 19375923, -12647961\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 8832269, -14495485, 13253511, 5137575, 5037871, 4078777, 24880818, -6222716, 2862653, 9455043\r\n ]), new FieldElement([\r\n 29306751, 5123106, 20245049, -14149889, 9592566, 8447059, -2077124, -2990080, 15511449, 4789663\r\n ]), new FieldElement([\r\n -20679756, 7004547, 8824831, -9434977, -4045704, -3750736, -5754762, 108893, 23513200, 16652362\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -33256173, 4144782, -4476029, -6579123, 10770039, -7155542, -6650416, -12936300, -18319198, 10212860\r\n ]), new FieldElement([\r\n 2756081, 8598110, 7383731, -6859892, 22312759, -1105012, 21179801, 2600940, -9988298, -12506466\r\n ]), new FieldElement([\r\n -24645692, 13317462, -30449259, -15653928, 21365574, -10869657, 11344424, 864440, -2499677, -16710063\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -26432803, 6148329, -17184412, -14474154, 18782929, -275997, -22561534, 211300, 2719757, 4940997\r\n ]), new FieldElement([\r\n -1323882, 3911313, -6948744, 14759765, -30027150, 7851207, 21690126, 8518463, 26699843, 5276295\r\n ]), new FieldElement([\r\n -13149873, -6429067, 9396249, 365013, 24703301, -10488939, 1321586, 149635, -15452774, 7159369\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 9987780, -3404759, 17507962, 9505530, 9731535, -2165514, 22356009, 8312176, 22477218, -8403385\r\n ]), new FieldElement([\r\n 18155857, -16504990, 19744716, 9006923, 15154154, -10538976, 24256460, -4864995, -22548173, 9334109\r\n ]), new FieldElement([\r\n 2986088, -4911893, 10776628, -3473844, 10620590, -7083203, -21413845, 14253545, -22587149, 536906\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 4377756, 8115836, 24567078, 15495314, 11625074, 13064599, 7390551, 10589625, 10838060, -15420424\r\n ]), new FieldElement([\r\n -19342404, 867880, 9277171, -3218459, -14431572, -1986443, 19295826, -15796950, 6378260, 699185\r\n ]), new FieldElement([\r\n 7895026, 4057113, -7081772, -13077756, -17886831, -323126, -716039, 15693155, -5045064, -13373962\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -7737563, -5869402, -14566319, -7406919, 11385654, 13201616, 31730678, -10962840, -3918636, -9669325\r\n ]), new FieldElement([\r\n 10188286, -15770834, -7336361, 13427543, 22223443, 14896287, 30743455, 7116568, -21786507, 5427593\r\n ]), new FieldElement([\r\n 696102, 13206899, 27047647, -10632082, 15285305, -9853179, 10798490, -4578720, 19236243, 12477404\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -11229439, 11243796, -17054270, -8040865, -788228, -8167967, -3897669, 11180504, -23169516, 7733644\r\n ]), new FieldElement([\r\n 17800790, -14036179, -27000429, -11766671, 23887827, 3149671, 23466177, -10538171, 10322027, 15313801\r\n ]), new FieldElement([\r\n 26246234, 11968874, 32263343, -5468728, 6830755, -13323031, -15794704, -101982, -24449242, 10890804\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -31365647, 10271363, -12660625, -6267268, 16690207, -13062544, -14982212, 16484931, 25180797, -5334884\r\n ]), new FieldElement([\r\n -586574, 10376444, -32586414, -11286356, 19801893, 10997610, 2276632, 9482883, 316878, 13820577\r\n ]), new FieldElement([\r\n -9882808, -4510367, -2115506, 16457136, -11100081, 11674996, 30756178, -7515054, 30696930, -3712849\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32988917, -9603412, 12499366, 7910787, -10617257, -11931514, -7342816, -9985397, -32349517, 7392473\r\n ]), new FieldElement([\r\n -8855661, 15927861, 9866406, -3649411, -2396914, -16655781, -30409476, -9134995, 25112947, -2926644\r\n ]), new FieldElement([\r\n -2504044, -436966, 25621774, -5678772, 15085042, -5479877, -24884878, -13526194, 5537438, -13914319\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -11225584, 2320285, -9584280, 10149187, -33444663, 5808648, -14876251, -1729667, 31234590, 6090599\r\n ]), new FieldElement([\r\n -9633316, 116426, 26083934, 2897444, -6364437, -2688086, 609721, 15878753, -6970405, -9034768\r\n ]), new FieldElement([\r\n -27757857, 247744, -15194774, -9002551, 23288161, -10011936, -23869595, 6503646, 20650474, 1804084\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -27589786, 15456424, 8972517, 8469608, 15640622, 4439847, 3121995, -10329713, 27842616, -202328\r\n ]), new FieldElement([\r\n -15306973, 2839644, 22530074, 10026331, 4602058, 5048462, 28248656, 5031932, -11375082, 12714369\r\n ]), new FieldElement([\r\n 20807691, -7270825, 29286141, 11421711, -27876523, -13868230, -21227475, 1035546, -19733229, 12796920\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 12076899, -14301286, -8785001, -11848922, -25012791, 16400684, -17591495, -12899438, 3480665, -15182815\r\n ]), new FieldElement([\r\n -32361549, 5457597, 28548107, 7833186, 7303070, -11953545, -24363064, -15921875, -33374054, 2771025\r\n ]), new FieldElement([\r\n -21389266, 421932, 26597266, 6860826, 22486084, -6737172, -17137485, -4210226, -24552282, 15673397\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20184622, 2338216, 19788685, -9620956, -4001265, -8740893, -20271184, 4733254, 3727144, -12934448\r\n ]), new FieldElement([\r\n 6120119, 814863, -11794402, -622716, 6812205, -15747771, 2019594, 7975683, 31123697, -10958981\r\n ]), new FieldElement([\r\n 30069250, -11435332, 30434654, 2958439, 18399564, -976289, 12296869, 9204260, -16432438, 9648165\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 32705432, -1550977, 30705658, 7451065, -11805606, 9631813, 3305266, 5248604, -26008332, -11377501\r\n ]), new FieldElement([\r\n 17219865, 2375039, -31570947, -5575615, -19459679, 9219903, 294711, 15298639, 2662509, -16297073\r\n ]), new FieldElement([\r\n -1172927, -7558695, -4366770, -4287744, -21346413, -8434326, 32087529, -1222777, 32247248, -14389861\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14312628, 1221556, 17395390, -8700143, -4945741, -8684635, -28197744, -9637817, -16027623, -13378845\r\n ]), new FieldElement([\r\n -1428825, -9678990, -9235681, 6549687, -7383069, -468664, 23046502, 9803137, 17597934, 2346211\r\n ]), new FieldElement([\r\n 18510800, 15337574, 26171504, 981392, -22241552, 7827556, -23491134, -11323352, 3059833, -11782870\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10141598, 6082907, 17829293, -1947643, 9830092, 13613136, -25556636, -5544586, -33502212, 3592096\r\n ]), new FieldElement([\r\n 33114168, -15889352, -26525686, -13343397, 33076705, 8716171, 1151462, 1521897, -982665, -6837803\r\n ]), new FieldElement([\r\n -32939165, -4255815, 23947181, -324178, -33072974, -12305637, -16637686, 3891704, 26353178, 693168\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30374239, 1595580, -16884039, 13186931, 4600344, 406904, 9585294, -400668, 31375464, 14369965\r\n ]), new FieldElement([\r\n -14370654, -7772529, 1510301, 6434173, -18784789, -6262728, 32732230, -13108839, 17901441, 16011505\r\n ]), new FieldElement([\r\n 18171223, -11934626, -12500402, 15197122, -11038147, -15230035, -19172240, -16046376, 8764035, 12309598\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 5975908, -5243188, -19459362, -9681747, -11541277, 14015782, -23665757, 1228319, 17544096, -10593782\r\n ]), new FieldElement([\r\n 5811932, -1715293, 3442887, -2269310, -18367348, -8359541, -18044043, -15410127, -5565381, 12348900\r\n ]), new FieldElement([\r\n -31399660, 11407555, 25755363, 6891399, -3256938, 14872274, -24849353, 8141295, -10632534, -585479\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -12675304, 694026, -5076145, 13300344, 14015258, -14451394, -9698672, -11329050, 30944593, 1130208\r\n ]), new FieldElement([\r\n 8247766, -6710942, -26562381, -7709309, -14401939, -14648910, 4652152, 2488540, 23550156, -271232\r\n ]), new FieldElement([\r\n 17294316, -3788438, 7026748, 15626851, 22990044, 113481, 2267737, -5908146, -408818, -137719\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16091085, -16253926, 18599252, 7340678, 2137637, -1221657, -3364161, 14550936, 3260525, -7166271\r\n ]), new FieldElement([\r\n -4910104, -13332887, 18550887, 10864893, -16459325, -7291596, -23028869, -13204905, -12748722, 2701326\r\n ]), new FieldElement([\r\n -8574695, 16099415, 4629974, -16340524, -20786213, -6005432, -10018363, 9276971, 11329923, 1862132\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 14763076, -15903608, -30918270, 3689867, 3511892, 10313526, -21951088, 12219231, -9037963, -940300\r\n ]), new FieldElement([\r\n 8894987, -3446094, 6150753, 3013931, 301220, 15693451, -31981216, -2909717, -15438168, 11595570\r\n ]), new FieldElement([\r\n 15214962, 3537601, -26238722, -14058872, 4418657, -15230761, 13947276, 10730794, -13489462, -4363670\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -2538306, 7682793, 32759013, 263109, -29984731, -7955452, -22332124, -10188635, 977108, 699994\r\n ]), new FieldElement([\r\n -12466472, 4195084, -9211532, 550904, -15565337, 12917920, 19118110, -439841, -30534533, -14337913\r\n ]), new FieldElement([\r\n 31788461, -14507657, 4799989, 7372237, 8808585, -14747943, 9408237, -10051775, 12493932, -5409317\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25680606, 5260744, -19235809, -6284470, -3695942, 16566087, 27218280, 2607121, 29375955, 6024730\r\n ]), new FieldElement([\r\n 842132, -2794693, -4763381, -8722815, 26332018, -12405641, 11831880, 6985184, -9940361, 2854096\r\n ]), new FieldElement([\r\n -4847262, -7969331, 2516242, -5847713, 9695691, -7221186, 16512645, 960770, 12121869, 16648078\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -15218652, 14667096, -13336229, 2013717, 30598287, -464137, -31504922, -7882064, 20237806, 2838411\r\n ]), new FieldElement([\r\n -19288047, 4453152, 15298546, -16178388, 22115043, -15972604, 12544294, -13470457, 1068881, -12499905\r\n ]), new FieldElement([\r\n -9558883, -16518835, 33238498, 13506958, 30505848, -1114596, -8486907, -2630053, 12521378, 4845654\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28198521, 10744108, -2958380, 10199664, 7759311, -13088600, 3409348, -873400, -6482306, -12885870\r\n ]), new FieldElement([\r\n -23561822, 6230156, -20382013, 10655314, -24040585, -11621172, 10477734, -1240216, -3113227, 13974498\r\n ]), new FieldElement([\r\n 12966261, 15550616, -32038948, -1615346, 21025980, -629444, 5642325, 7188737, 18895762, 12629579\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 14741879, -14946887, 22177208, -11721237, 1279741, 8058600, 11758140, 789443, 32195181, 3895677\r\n ]), new FieldElement([\r\n 10758205, 15755439, -4509950, 9243698, -4879422, 6879879, -2204575, -3566119, -8982069, 4429647\r\n ]), new FieldElement([\r\n -2453894, 15725973, -20436342, -10410672, -5803908, -11040220, -7135870, -11642895, 18047436, -15281743\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25173001, -11307165, 29759956, 11776784, -22262383, -15820455, 10993114, -12850837, -17620701, -9408468\r\n ]), new FieldElement([\r\n 21987233, 700364, -24505048, 14972008, -7774265, -5718395, 32155026, 2581431, -29958985, 8773375\r\n ]), new FieldElement([\r\n -25568350, 454463, -13211935, 16126715, 25240068, 8594567, 20656846, 12017935, -7874389, -13920155\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 6028182, 6263078, -31011806, -11301710, -818919, 2461772, -31841174, -5468042, -1721788, -2776725\r\n ]), new FieldElement([\r\n -12278994, 16624277, 987579, -5922598, 32908203, 1248608, 7719845, -4166698, 28408820, 6816612\r\n ]), new FieldElement([\r\n -10358094, -8237829, 19549651, -12169222, 22082623, 16147817, 20613181, 13982702, -10339570, 5067943\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -30505967, -3821767, 12074681, 13582412, -19877972, 2443951, -19719286, 12746132, 5331210, -10105944\r\n ]), new FieldElement([\r\n 30528811, 3601899, -1957090, 4619785, -27361822, -15436388, 24180793, -12570394, 27679908, -1648928\r\n ]), new FieldElement([\r\n 9402404, -13957065, 32834043, 10838634, -26580150, -13237195, 26653274, -8685565, 22611444, -12715406\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 22190590, 1118029, 22736441, 15130463, -30460692, -5991321, 19189625, -4648942, 4854859, 6622139\r\n ]), new FieldElement([\r\n -8310738, -2953450, -8262579, -3388049, -10401731, -271929, 13424426, -3567227, 26404409, 13001963\r\n ]), new FieldElement([\r\n -31241838, -15415700, -2994250, 8939346, 11562230, -12840670, -26064365, -11621720, -15405155, 11020693\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 1866042, -7949489, -7898649, -10301010, 12483315, 13477547, 3175636, -12424163, 28761762, 1406734\r\n ]), new FieldElement([\r\n -448555, -1777666, 13018551, 3194501, -9580420, -11161737, 24760585, -4347088, 25577411, -13378680\r\n ]), new FieldElement([\r\n -24290378, 4759345, -690653, -1852816, 2066747, 10693769, -29595790, 9884936, -9368926, 4745410\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9141284, 6049714, -19531061, -4341411, -31260798, 9944276, -15462008, -11311852, 10931924, -11931931\r\n ]), new FieldElement([\r\n -16561513, 14112680, -8012645, 4817318, -8040464, -11414606, -22853429, 10856641, -20470770, 13434654\r\n ]), new FieldElement([\r\n 22759489, -10073434, -16766264, -1871422, 13637442, -10168091, 1765144, -12654326, 28445307, -5364710\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 29875063, 12493613, 2795536, -3786330, 1710620, 15181182, -10195717, -8788675, 9074234, 1167180\r\n ]), new FieldElement([\r\n -26205683, 11014233, -9842651, -2635485, -26908120, 7532294, -18716888, -9535498, 3843903, 9367684\r\n ]), new FieldElement([\r\n -10969595, -6403711, 9591134, 9582310, 11349256, 108879, 16235123, 8601684, -139197, 4242895\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 22092954, -13191123, -2042793, -11968512, 32186753, -11517388, -6574341, 2470660, -27417366, 16625501\r\n ]), new FieldElement([\r\n -11057722, 3042016, 13770083, -9257922, 584236, -544855, -7770857, 2602725, -27351616, 14247413\r\n ]), new FieldElement([\r\n 6314175, -10264892, -32772502, 15957557, -10157730, 168750, -8618807, 14290061, 27108877, -1180880\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -8586597, -7170966, 13241782, 10960156, -32991015, -13794596, 33547976, -11058889, -27148451, 981874\r\n ]), new FieldElement([\r\n 22833440, 9293594, -32649448, -13618667, -9136966, 14756819, -22928859, -13970780, -10479804, -16197962\r\n ]), new FieldElement([\r\n -7768587, 3326786, -28111797, 10783824, 19178761, 14905060, 22680049, 13906969, -15933690, 3797899\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21721356, -4212746, -12206123, 9310182, -3882239, -13653110, 23740224, -2709232, 20491983, -8042152\r\n ]), new FieldElement([\r\n 9209270, -15135055, -13256557, -6167798, -731016, 15289673, 25947805, 15286587, 30997318, -6703063\r\n ]), new FieldElement([\r\n 7392032, 16618386, 23946583, -8039892, -13265164, -1533858, -14197445, -2321576, 17649998, -250080\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9301088, -14193827, 30609526, -3049543, -25175069, -1283752, -15241566, -9525724, -2233253, 7662146\r\n ]), new FieldElement([\r\n -17558673, 1763594, -33114336, 15908610, -30040870, -12174295, 7335080, -8472199, -3174674, 3440183\r\n ]), new FieldElement([\r\n -19889700, -5977008, -24111293, -9688870, 10799743, -16571957, 40450, -4431835, 4862400, 1133\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -32856209, -7873957, -5422389, 14860950, -16319031, 7956142, 7258061, 311861, -30594991, -7379421\r\n ]), new FieldElement([\r\n -3773428, -1565936, 28985340, 7499440, 24445838, 9325937, 29727763, 16527196, 18278453, 15405622\r\n ]), new FieldElement([\r\n -4381906, 8508652, -19898366, -3674424, -5984453, 15149970, -13313598, 843523, -21875062, 13626197\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2281448, -13487055, -10915418, -2609910, 1879358, 16164207, -10783882, 3953792, 13340839, 15928663\r\n ]), new FieldElement([\r\n 31727126, -7179855, -18437503, -8283652, 2875793, -16390330, -25269894, -7014826, -23452306, 5964753\r\n ]), new FieldElement([\r\n 4100420, -5959452, -17179337, 6017714, -18705837, 12227141, -26684835, 11344144, 2538215, -7570755\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9433605, 6123113, 11159803, -2156608, 30016280, 14966241, -20474983, 1485421, -629256, -15958862\r\n ]), new FieldElement([\r\n -26804558, 4260919, 11851389, 9658551, -32017107, 16367492, -20205425, -13191288, 11659922, -11115118\r\n ]), new FieldElement([\r\n 26180396, 10015009, -30844224, -8581293, 5418197, 9480663, 2231568, -10170080, 33100372, -1306171\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15121113, -5201871, -10389905, 15427821, -27509937, -15992507, 21670947, 4486675, -5931810, -14466380\r\n ]), new FieldElement([\r\n 16166486, -9483733, -11104130, 6023908, -31926798, -1364923, 2340060, -16254968, -10735770, -10039824\r\n ]), new FieldElement([\r\n 28042865, -3557089, -12126526, 12259706, -3717498, -6945899, 6766453, -8689599, 18036436, 5803270\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -817581, 6763912, 11803561, 1585585, 10958447, -2671165, 23855391, 4598332, -6159431, -14117438\r\n ]), new FieldElement([\r\n -31031306, -14256194, 17332029, -2383520, 31312682, -5967183, 696309, 50292, -20095739, 11763584\r\n ]), new FieldElement([\r\n -594563, -2514283, -32234153, 12643980, 12650761, 14811489, 665117, -12613632, -19773211, -10713562\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30464590, -11262872, -4127476, -12734478, 19835327, -7105613, -24396175, 2075773, -17020157, 992471\r\n ]), new FieldElement([\r\n 18357185, -6994433, 7766382, 16342475, -29324918, 411174, 14578841, 8080033, -11574335, -10601610\r\n ]), new FieldElement([\r\n 19598397, 10334610, 12555054, 2555664, 18821899, -10339780, 21873263, 16014234, 26224780, 16452269\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -30223925, 5145196, 5944548, 16385966, 3976735, 2009897, -11377804, -7618186, -20533829, 3698650\r\n ]), new FieldElement([\r\n 14187449, 3448569, -10636236, -10810935, -22663880, -3433596, 7268410, -10890444, 27394301, 12015369\r\n ]), new FieldElement([\r\n 19695761, 16087646, 28032085, 12999827, 6817792, 11427614, 20244189, -1312777, -13259127, -3402461\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30860103, 12735208, -1888245, -4699734, -16974906, 2256940, -8166013, 12298312, -8550524, -10393462\r\n ]), new FieldElement([\r\n -5719826, -11245325, -1910649, 15569035, 26642876, -7587760, -5789354, -15118654, -4976164, 12651793\r\n ]), new FieldElement([\r\n -2848395, 9953421, 11531313, -5282879, 26895123, -12697089, -13118820, -16517902, 9768698, -2533218\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24719459, 1894651, -287698, -4704085, 15348719, -8156530, 32767513, 12765450, 4940095, 10678226\r\n ]), new FieldElement([\r\n 18860224, 15980149, -18987240, -1562570, -26233012, -11071856, -7843882, 13944024, -24372348, 16582019\r\n ]), new FieldElement([\r\n -15504260, 4970268, -29893044, 4175593, -20993212, -2199756, -11704054, 15444560, -11003761, 7989037\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31490452, 5568061, -2412803, 2182383, -32336847, 4531686, -32078269, 6200206, -19686113, -14800171\r\n ]), new FieldElement([\r\n -17308668, -15879940, -31522777, -2831, -32887382, 16375549, 8680158, -16371713, 28550068, -6857132\r\n ]), new FieldElement([\r\n -28126887, -5688091, 16837845, -1820458, -6850681, 12700016, -30039981, 4364038, 1155602, 5988841\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 21890435, -13272907, -12624011, 12154349, -7831873, 15300496, 23148983, -4470481, 24618407, 8283181\r\n ]), new FieldElement([\r\n -33136107, -10512751, 9975416, 6841041, -31559793, 16356536, 3070187, -7025928, 1466169, 10740210\r\n ]), new FieldElement([\r\n -1509399, -15488185, -13503385, -10655916, 32799044, 909394, -13938903, -5779719, -32164649, -15327040\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 3960823, -14267803, -28026090, -15918051, -19404858, 13146868, 15567327, 951507, -3260321, -573935\r\n ]), new FieldElement([\r\n 24740841, 5052253, -30094131, 8961361, 25877428, 6165135, -24368180, 14397372, -7380369, -6144105\r\n ]), new FieldElement([\r\n -28888365, 3510803, -28103278, -1158478, -11238128, -10631454, -15441463, -14453128, -1625486, -6494814\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 793299, -9230478, 8836302, -6235707, -27360908, -2369593, 33152843, -4885251, -9906200, -621852\r\n ]), new FieldElement([\r\n 5666233, 525582, 20782575, -8038419, -24538499, 14657740, 16099374, 1468826, -6171428, -15186581\r\n ]), new FieldElement([\r\n -4859255, -3779343, -2917758, -6748019, 7778750, 11688288, -30404353, -9871238, -1558923, -9863646\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 10896332, -7719704, 824275, 472601, -19460308, 3009587, 25248958, 14783338, -30581476, -15757844\r\n ]), new FieldElement([\r\n 10566929, 12612572, -31944212, 11118703, -12633376, 12362879, 21752402, 8822496, 24003793, 14264025\r\n ]), new FieldElement([\r\n 27713862, -7355973, -11008240, 9227530, 27050101, 2504721, 23886875, -13117525, 13958495, -5732453\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23481610, 4867226, -27247128, 3900521, 29838369, -8212291, -31889399, -10041781, 7340521, -15410068\r\n ]), new FieldElement([\r\n 4646514, -8011124, -22766023, -11532654, 23184553, 8566613, 31366726, -1381061, -15066784, -10375192\r\n ]), new FieldElement([\r\n -17270517, 12723032, -16993061, 14878794, 21619651, -6197576, 27584817, 3093888, -8843694, 3849921\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9064912, 2103172, 25561640, -15125738, -5239824, 9582958, 32477045, -9017955, 5002294, -15550259\r\n ]), new FieldElement([\r\n -12057553, -11177906, 21115585, -13365155, 8808712, -12030708, 16489530, 13378448, -25845716, 12741426\r\n ]), new FieldElement([\r\n -5946367, 10645103, -30911586, 15390284, -3286982, -7118677, 24306472, 15852464, 28834118, -7646072\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -17335748, -9107057, -24531279, 9434953, -8472084, -583362, -13090771, 455841, 20461858, 5491305\r\n ]), new FieldElement([\r\n 13669248, -16095482, -12481974, -10203039, -14569770, -11893198, -24995986, 11293807, -28588204,\r\n -9421832\r\n ]), new FieldElement([\r\n 28497928, 6272777, -33022994, 14470570, 8906179, -1225630, 18504674, -14165166, 29867745, -8795943\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16207023, 13517196, -27799630, -13697798, 24009064, -6373891, -6367600, -13175392, 22853429, -4012011\r\n ]), new FieldElement([\r\n 24191378, 16712145, -13931797, 15217831, 14542237, 1646131, 18603514, -11037887, 12876623, -2112447\r\n ]), new FieldElement([\r\n 17902668, 4518229, -411702, -2829247, 26878217, 5258055, -12860753, 608397, 16031844, 3723494\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28632773, 12763728, -20446446, 7577504, 33001348, -13017745, 17558842, -7872890, 23896954, -4314245\r\n ]), new FieldElement([\r\n -20005381, -12011952, 31520464, 605201, 2543521, 5991821, -2945064, 7229064, -9919646, -8826859\r\n ]), new FieldElement([\r\n 28816045, 298879, -28165016, -15920938, 19000928, -1665890, -12680833, -2949325, -18051778, -2082915\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16000882, -344896, 3493092, -11447198, -29504595, -13159789, 12577740, 16041268, -19715240, 7847707\r\n ]), new FieldElement([\r\n 10151868, 10572098, 27312476, 7922682, 14825339, 4723128, -32855931, -6519018, -10020567, 3852848\r\n ]), new FieldElement([\r\n -11430470, 15697596, -21121557, -4420647, 5386314, 15063598, 16514493, -15932110, 29330899, -15076224\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -25499735, -4378794, -15222908, -6901211, 16615731, 2051784, 3303702, 15490, -27548796, 12314391\r\n ]), new FieldElement([\r\n 15683520, -6003043, 18109120, -9980648, 15337968, -5997823, -16717435, 15921866, 16103996, -3731215\r\n ]), new FieldElement([\r\n -23169824, -10781249, 13588192, -1628807, -3798557, -1074929, -19273607, 5402699, -29815713, -9841101\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 23190676, 2384583, -32714340, 3462154, -29903655, -1529132, -11266856, 8911517, -25205859, 2739713\r\n ]), new FieldElement([\r\n 21374101, -3554250, -33524649, 9874411, 15377179, 11831242, -33529904, 6134907, 4931255, 11987849\r\n ]), new FieldElement([\r\n -7732, -2978858, -16223486, 7277597, 105524, -322051, -31480539, 13861388, -30076310, 10117930\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -29501170, -10744872, -26163768, 13051539, -25625564, 5089643, -6325503, 6704079, 12890019, 15728940\r\n ]), new FieldElement([\r\n -21972360, -11771379, -951059, -4418840, 14704840, 2695116, 903376, -10428139, 12885167, 8311031\r\n ]), new FieldElement([\r\n -17516482, 5352194, 10384213, -13811658, 7506451, 13453191, 26423267, 4384730, 1888765, -5435404\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25817338, -3107312, -13494599, -3182506, 30896459, -13921729, -32251644, -12707869, -19464434, -3340243\r\n ]), new FieldElement([\r\n -23607977, -2665774, -526091, 4651136, 5765089, 4618330, 6092245, 14845197, 17151279, -9854116\r\n ]), new FieldElement([\r\n -24830458, -12733720, -15165978, 10367250, -29530908, -265356, 22825805, -7087279, -16866484, 16176525\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23583256, 6564961, 20063689, 3798228, -4740178, 7359225, 2006182, -10363426, -28746253, -10197509\r\n ]), new FieldElement([\r\n -10626600, -4486402, -13320562, -5125317, 3432136, -6393229, 23632037, -1940610, 32808310, 1099883\r\n ]), new FieldElement([\r\n 15030977, 5768825, -27451236, -2887299, -6427378, -15361371, -15277896, -6809350, 2051441, -15225865\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3362323, -7239372, 7517890, 9824992, 23555850, 295369, 5148398, -14154188, -22686354, 16633660\r\n ]), new FieldElement([\r\n 4577086, -16752288, 13249841, -15304328, 19958763, -14537274, 18559670, -10759549, 8402478, -9864273\r\n ]), new FieldElement([\r\n -28406330, -1051581, -26790155, -907698, -17212414, -11030789, 9453451, -14980072, 17983010, 9967138\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25762494, 6524722, 26585488, 9969270, 24709298, 1220360, -1677990, 7806337, 17507396, 3651560\r\n ]), new FieldElement([\r\n -10420457, -4118111, 14584639, 15971087, -15768321, 8861010, 26556809, -5574557, -18553322, -11357135\r\n ]), new FieldElement([\r\n 2839101, 14284142, 4029895, 3472686, 14402957, 12689363, -26642121, 8459447, -5605463, -7621941\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -4839289, -3535444, 9744961, 2871048, 25113978, 3187018, -25110813, -849066, 17258084, -7977739\r\n ]), new FieldElement([\r\n 18164541, -10595176, -17154882, -1542417, 19237078, -9745295, 23357533, -15217008, 26908270, 12150756\r\n ]), new FieldElement([\r\n -30264870, -7647865, 5112249, -7036672, -1499807, -6974257, 43168, -5537701, -32302074, 16215819\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -6898905, 9824394, -12304779, -4401089, -31397141, -6276835, 32574489, 12532905, -7503072, -8675347\r\n ]), new FieldElement([\r\n -27343522, -16515468, -27151524, -10722951, 946346, 16291093, 254968, 7168080, 21676107, -1943028\r\n ]), new FieldElement([\r\n 21260961, -8424752, -16831886, -11920822, -23677961, 3968121, -3651949, -6215466, -3556191, -7913075\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16544754, 13250366, -16804428, 15546242, -4583003, 12757258, -2462308, -8680336, -18907032, -9662799\r\n ]), new FieldElement([\r\n -2415239, -15577728, 18312303, 4964443, -15272530, -12653564, 26820651, 16690659, 25459437, -4564609\r\n ]), new FieldElement([\r\n -25144690, 11425020, 28423002, -11020557, -6144921, -15826224, 9142795, -2391602, -6432418, -1644817\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23104652, 6253476, 16964147, -3768872, -25113972, -12296437, -27457225, -16344658, 6335692, 7249989\r\n ]), new FieldElement([\r\n -30333227, 13979675, 7503222, -12368314, -11956721, -4621693, -30272269, 2682242, 25993170, -12478523\r\n ]), new FieldElement([\r\n 4364628, 5930691, 32304656, -10044554, -8054781, 15091131, 22857016, -10598955, 31820368, 15075278\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31879134, -8918693, 17258761, 90626, -8041836, -4917709, 24162788, -9650886, -17970238, 12833045\r\n ]), new FieldElement([\r\n 19073683, 14851414, -24403169, -11860168, 7625278, 11091125, -19619190, 2074449, -9413939, 14905377\r\n ]), new FieldElement([\r\n 24483667, -11935567, -2518866, -11547418, -1553130, 15355506, -25282080, 9253129, 27628530, -7555480\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 17597607, 8340603, 19355617, 552187, 26198470, -3176583, 4593324, -9157582, -14110875, 15297016\r\n ]), new FieldElement([\r\n 510886, 14337390, -31785257, 16638632, 6328095, 2713355, -20217417, -11864220, 8683221, 2921426\r\n ]), new FieldElement([\r\n 18606791, 11874196, 27155355, -5281482, -24031742, 6265446, -25178240, -1278924, 4674690, 13890525\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 13609624, 13069022, -27372361, -13055908, 24360586, 9592974, 14977157, 9835105, 4389687, 288396\r\n ]), new FieldElement([\r\n 9922506, -519394, 13613107, 5883594, -18758345, -434263, -12304062, 8317628, 23388070, 16052080\r\n ]), new FieldElement([\r\n 12720016, 11937594, -31970060, -5028689, 26900120, 8561328, -20155687, -11632979, -14754271, -10812892\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 15961858, 14150409, 26716931, -665832, -22794328, 13603569, 11829573, 7467844, -28822128, 929275\r\n ]), new FieldElement([\r\n 11038231, -11582396, -27310482, -7316562, -10498527, -16307831, -23479533, -9371869, -21393143, 2465074\r\n ]), new FieldElement([\r\n 20017163, -4323226, 27915242, 1529148, 12396362, 15675764, 13817261, -9658066, 2463391, -4622140\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16358878, -12663911, -12065183, 4996454, -1256422, 1073572, 9583558, 12851107, 4003896, 12673717\r\n ]), new FieldElement([\r\n -1731589, -15155870, -3262930, 16143082, 19294135, 13385325, 14741514, -9103726, 7903886, 2348101\r\n ]), new FieldElement([\r\n 24536016, -16515207, 12715592, -3862155, 1511293, 10047386, -3842346, -7129159, -28377538, 10048127\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -12622226, -6204820, 30718825, 2591312, -10617028, 12192840, 18873298, -7297090, -32297756, 15221632\r\n ]), new FieldElement([\r\n -26478122, -11103864, 11546244, -1852483, 9180880, 7656409, -21343950, 2095755, 29769758, 6593415\r\n ]), new FieldElement([\r\n -31994208, -2907461, 4176912, 3264766, 12538965, -868111, 26312345, -6118678, 30958054, 8292160\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31429822, -13959116, 29173532, 15632448, 12174511, -2760094, 32808831, 3977186, 26143136, -3148876\r\n ]), new FieldElement([\r\n 22648901, 1402143, -22799984, 13746059, 7936347, 365344, -8668633, -1674433, -3758243, -2304625\r\n ]), new FieldElement([\r\n -15491917, 8012313, -2514730, -12702462, -23965846, -10254029, -1612713, -1535569, -16664475, 8194478\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 27338066, -7507420, -7414224, 10140405, -19026427, -6589889, 27277191, 8855376, 28572286, 3005164\r\n ]), new FieldElement([\r\n 26287124, 4821776, 25476601, -4145903, -3764513, -15788984, -18008582, 1182479, -26094821, -13079595\r\n ]), new FieldElement([\r\n -7171154, 3178080, 23970071, 6201893, -17195577, -4489192, -21876275, -13982627, 32208683, -1198248\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -16657702, 2817643, -10286362, 14811298, 6024667, 13349505, -27315504, -10497842, -27672585, -11539858\r\n ]), new FieldElement([\r\n 15941029, -9405932, -21367050, 8062055, 31876073, -238629, -15278393, -1444429, 15397331, -4130193\r\n ]), new FieldElement([\r\n 8934485, -13485467, -23286397, -13423241, -32446090, 14047986, 31170398, -1441021, -27505566, 15087184\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -18357243, -2156491, 24524913, -16677868, 15520427, -6360776, -15502406, 11461896, 16788528, -5868942\r\n ]), new FieldElement([\r\n -1947386, 16013773, 21750665, 3714552, -17401782, -16055433, -3770287, -10323320, 31322514, -11615635\r\n ]), new FieldElement([\r\n 21426655, -5650218, -13648287, -5347537, -28812189, -4920970, -18275391, -14621414, 13040862, -12112948\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 11293895, 12478086, -27136401, 15083750, -29307421, 14748872, 14555558, -13417103, 1613711, 4896935\r\n ]), new FieldElement([\r\n -25894883, 15323294, -8489791, -8057900, 25967126, -13425460, 2825960, -4897045, -23971776, -11267415\r\n ]), new FieldElement([\r\n -15924766, -5229880, -17443532, 6410664, 3622847, 10243618, 20615400, 12405433, -23753030, -8436416\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -7091295, 12556208, -20191352, 9025187, -17072479, 4333801, 4378436, 2432030, 23097949, -566018\r\n ]), new FieldElement([\r\n 4565804, -16025654, 20084412, -7842817, 1724999, 189254, 24767264, 10103221, -18512313, 2424778\r\n ]), new FieldElement([\r\n 366633, -11976806, 8173090, -6890119, 30788634, 5745705, -7168678, 1344109, -3642553, 12412659\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -24001791, 7690286, 14929416, -168257, -32210835, -13412986, 24162697, -15326504, -3141501, 11179385\r\n ]), new FieldElement([\r\n 18289522, -14724954, 8056945, 16430056, -21729724, 7842514, -6001441, -1486897, -18684645, -11443503\r\n ]), new FieldElement([\r\n 476239, 6601091, -6152790, -9723375, 17503545, -4863900, 27672959, 13403813, 11052904, 5219329\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 20678546, -8375738, -32671898, 8849123, -5009758, 14574752, 31186971, -3973730, 9014762, -8579056\r\n ]), new FieldElement([\r\n -13644050, -10350239, -15962508, 5075808, -1514661, -11534600, -33102500, 9160280, 8473550, -3256838\r\n ]), new FieldElement([\r\n 24900749, 14435722, 17209120, -15292541, -22592275, 9878983, -7689309, -16335821, -24568481, 11788948\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -3118155, -11395194, -13802089, 14797441, 9652448, -6845904, -20037437, 10410733, -24568470, -1458691\r\n ]), new FieldElement([\r\n -15659161, 16736706, -22467150, 10215878, -9097177, 7563911, 11871841, -12505194, -18513325, 8464118\r\n ]), new FieldElement([\r\n -23400612, 8348507, -14585951, -861714, -3950205, -6373419, 14325289, 8628612, 33313881, -8370517\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20186973, -4967935, 22367356, 5271547, -1097117, -4788838, -24805667, -10236854, -8940735, -5818269\r\n ]), new FieldElement([\r\n -6948785, -1795212, -32625683, -16021179, 32635414, -7374245, 15989197, -12838188, 28358192, -4253904\r\n ]), new FieldElement([\r\n -23561781, -2799059, -32351682, -1661963, -9147719, 10429267, -16637684, 4072016, -5351664, 5596589\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28236598, -3390048, 12312896, 6213178, 3117142, 16078565, 29266239, 2557221, 1768301, 15373193\r\n ]), new FieldElement([\r\n -7243358, -3246960, -4593467, -7553353, -127927, -912245, -1090902, -4504991, -24660491, 3442910\r\n ]), new FieldElement([\r\n -30210571, 5124043, 14181784, 8197961, 18964734, -11939093, 22597931, 7176455, -18585478, 13365930\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -7877390, -1499958, 8324673, 4690079, 6261860, 890446, 24538107, -8570186, -9689599, -3031667\r\n ]), new FieldElement([\r\n 25008904, -10771599, -4305031, -9638010, 16265036, 15721635, 683793, -11823784, 15723479, -15163481\r\n ]), new FieldElement([\r\n -9660625, 12374379, -27006999, -7026148, -7724114, -12314514, 11879682, 5400171, 519526, -1235876\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 22258397, -16332233, -7869817, 14613016, -22520255, -2950923, -20353881, 7315967, 16648397, 7605640\r\n ]), new FieldElement([\r\n -8081308, -8464597, -8223311, 9719710, 19259459, -15348212, 23994942, -5281555, -9468848, 4763278\r\n ]), new FieldElement([\r\n -21699244, 9220969, -15730624, 1084137, -25476107, -2852390, 31088447, -7764523, -11356529, 728112\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 26047220, -11751471, -6900323, -16521798, 24092068, 9158119, -4273545, -12555558, -29365436, -5498272\r\n ]), new FieldElement([\r\n 17510331, -322857, 5854289, 8403524, 17133918, -3112612, -28111007, 12327945, 10750447, 10014012\r\n ]), new FieldElement([\r\n -10312768, 3936952, 9156313, -8897683, 16498692, -994647, -27481051, -666732, 3424691, 7540221\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30322361, -6964110, 11361005, -4143317, 7433304, 4989748, -7071422, -16317219, -9244265, 15258046\r\n ]), new FieldElement([\r\n 13054562, -2779497, 19155474, 469045, -12482797, 4566042, 5631406, 2711395, 1062915, -5136345\r\n ]), new FieldElement([\r\n -19240248, -11254599, -29509029, -7499965, -5835763, 13005411, -6066489, 12194497, 32960380, 1459310\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 19852034, 7027924, 23669353, 10020366, 8586503, -6657907, 394197, -6101885, 18638003, -11174937\r\n ]), new FieldElement([\r\n 31395534, 15098109, 26581030, 8030562, -16527914, -5007134, 9012486, -7584354, -6643087, -5442636\r\n ]), new FieldElement([\r\n -9192165, -2347377, -1997099, 4529534, 25766844, 607986, -13222, 9677543, -32294889, -6456008\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -2444496, -149937, 29348902, 8186665, 1873760, 12489863, -30934579, -7839692, -7852844, -8138429\r\n ]), new FieldElement([\r\n -15236356, -15433509, 7766470, 746860, 26346930, -10221762, -27333451, 10754588, -9431476, 5203576\r\n ]), new FieldElement([\r\n 31834314, 14135496, -770007, 5159118, 20917671, -16768096, -7467973, -7337524, 31809243, 7347066\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -9606723, -11874240, 20414459, 13033986, 13716524, -11691881, 19797970, -12211255, 15192876, -2087490\r\n ]), new FieldElement([\r\n -12663563, -2181719, 1168162, -3804809, 26747877, -14138091, 10609330, 12694420, 33473243, -13382104\r\n ]), new FieldElement([\r\n 33184999, 11180355, 15832085, -11385430, -1633671, 225884, 15089336, -11023903, -6135662, 14480053\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 31308717, -5619998, 31030840, -1897099, 15674547, -6582883, 5496208, 13685227, 27595050, 8737275\r\n ]), new FieldElement([\r\n -20318852, -15150239, 10933843, -16178022, 8335352, -7546022, -31008351, -12610604, 26498114, 66511\r\n ]), new FieldElement([\r\n 22644454, -8761729, -16671776, 4884562, -3105614, -13559366, 30540766, -4286747, -13327787, -7515095\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -28017847, 9834845, 18617207, -2681312, -3401956, -13307506, 8205540, 13585437, -17127465, 15115439\r\n ]), new FieldElement([\r\n 23711543, -672915, 31206561, -8362711, 6164647, -9709987, -33535882, -1426096, 8236921, 16492939\r\n ]), new FieldElement([\r\n -23910559, -13515526, -26299483, -4503841, 25005590, -7687270, 19574902, 10071562, 6708380, -6222424\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 2101391, -4930054, 19702731, 2367575, -15427167, 1047675, 5301017, 9328700, 29955601, -11678310\r\n ]), new FieldElement([\r\n 3096359, 9271816, -21620864, -15521844, -14847996, -7592937, -25892142, -12635595, -9917575, 6216608\r\n ]), new FieldElement([\r\n -32615849, 338663, -25195611, 2510422, -29213566, -13820213, 24822830, -6146567, -26767480, 7525079\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23066649, -13985623, 16133487, -7896178, -3389565, 778788, -910336, -2782495, -19386633, 11994101\r\n ]), new FieldElement([\r\n 21691500, -13624626, -641331, -14367021, 3285881, -3483596, -25064666, 9718258, -7477437, 13381418\r\n ]), new FieldElement([\r\n 18445390, -4202236, 14979846, 11622458, -1727110, -3582980, 23111648, -6375247, 28535282, 15779576\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30098053, 3089662, -9234387, 16662135, -21306940, 11308411, -14068454, 12021730, 9955285, -16303356\r\n ]), new FieldElement([\r\n 9734894, -14576830, -7473633, -9138735, 2060392, 11313496, -18426029, 9924399, 20194861, 13380996\r\n ]), new FieldElement([\r\n -26378102, -7965207, -22167821, 15789297, -18055342, -6168792, -1984914, 15707771, 26342023, 10146099\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n -26016874, -219943, 21339191, -41388, 19745256, -2878700, -29637280, 2227040, 21612326, -545728\r\n ]), new FieldElement([\r\n -13077387, 1184228, 23562814, -5970442, -20351244, -6348714, 25764461, 12243797, -20856566, 11649658\r\n ]), new FieldElement([\r\n -10031494, 11262626, 27384172, 2271902, 26947504, -15997771, 39944, 6114064, 33514190, 2333242\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -21433588, -12421821, 8119782, 7219913, -21830522, -9016134, -6679750, -12670638, 24350578, -13450001\r\n ]), new FieldElement([\r\n -4116307, -11271533, -23886186, 4843615, -30088339, 690623, -31536088, -10406836, 8317860, 12352766\r\n ]), new FieldElement([\r\n 18200138, -14475911, -33087759, -2696619, -23702521, -9102511, -23552096, -2287550, 20712163, 6719373\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 26656208, 6075253, -7858556, 1886072, -28344043, 4262326, 11117530, -3763210, 26224235, -3297458\r\n ]), new FieldElement([\r\n -17168938, -14854097, -3395676, -16369877, -19954045, 14050420, 21728352, 9493610, 18620611, -16428628\r\n ]), new FieldElement([\r\n -13323321, 13325349, 11432106, 5964811, 18609221, 6062965, -5269471, -9725556, -30701573, -16479657\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -23860538, -11233159, 26961357, 1640861, -32413112, -16737940, 12248509, -5240639, 13735342, 1934062\r\n ]), new FieldElement([\r\n 25089769, 6742589, 17081145, -13406266, 21909293, -16067981, -15136294, -3765346, -21277997, 5473616\r\n ]), new FieldElement([\r\n 31883677, -7961101, 1083432, -11572403, 22828471, 13290673, -7125085, 12469656, 29111212, -5451014\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 24244947, -15050407, -26262976, 2791540, -14997599, 16666678, 24367466, 6388839, -10295587, 452383\r\n ]), new FieldElement([\r\n -25640782, -3417841, 5217916, 16224624, 19987036, -4082269, -24236251, -5915248, 15766062, 8407814\r\n ]), new FieldElement([\r\n -20406999, 13990231, 15495425, 16395525, 5377168, 15166495, -8917023, -4388953, -8067909, 2276718\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 30157918, 12924066, -17712050, 9245753, 19895028, 3368142, -23827587, 5096219, 22740376, -7303417\r\n ]), new FieldElement([\r\n 2041139, -14256350, 7783687, 13876377, -25946985, -13352459, 24051124, 13742383, -15637599, 13295222\r\n ]), new FieldElement([\r\n 33338237, -8505733, 12532113, 7977527, 9106186, -1715251, -17720195, -4612972, -4451357, -14669444\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -20045281, 5454097, -14346548, 6447146, 28862071, 1883651, -2469266, -4141880, 7770569, 9620597\r\n ]), new FieldElement([\r\n 23208068, 7979712, 33071466, 8149229, 1758231, -10834995, 30945528, -1694323, -33502340, -14767970\r\n ]), new FieldElement([\r\n 1439958, -16270480, -1079989, -793782, 4625402, 10647766, -5043801, 1220118, 30494170, -11440799\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -5037580, -13028295, -2970559, -3061767, 15640974, -6701666, -26739026, 926050, -1684339, -13333647\r\n ]), new FieldElement([\r\n 13908495, -3549272, 30919928, -6273825, -21521863, 7989039, 9021034, 9078865, 3353509, 4033511\r\n ]), new FieldElement([\r\n -29663431, -15113610, 32259991, -344482, 24295849, -12912123, 23161163, 8839127, 27485041, 7356032\r\n ]))\r\n ],\r\n [\r\n new PreComputedGroupElement(new FieldElement([\r\n 9661027, 705443, 11980065, -5370154, -1628543, 14661173, -6346142, 2625015, 28431036, -16771834\r\n ]), new FieldElement([\r\n -23839233, -8311415, -25945511, 7480958, -17681669, -8354183, -22545972, 14150565, 15970762, 4099461\r\n ]), new FieldElement([\r\n 29262576, 16756590, 26350592, -8793563, 8529671, -11208050, 13617293, -9937143, 11465739, 8317062\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -25493081, -6962928, 32500200, -9419051, -23038724, -2302222, 14898637, 3848455, 20969334, -5157516\r\n ]), new FieldElement([\r\n -20384450, -14347713, -18336405, 13884722, -33039454, 2842114, -21610826, -3649888, 11177095, 14989547\r\n ]), new FieldElement([\r\n -24496721, -11716016, 16959896, 2278463, 12066309, 10137771, 13515641, 2581286, -28487508, 9930240\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -17751622, -2097826, 16544300, -13009300, -15914807, -14949081, 18345767, -13403753, 16291481, -5314038\r\n ]), new FieldElement([\r\n -33229194, 2553288, 32678213, 9875984, 8534129, 6889387, -9676774, 6957617, 4368891, 9788741\r\n ]), new FieldElement([\r\n 16660756, 7281060, -10830758, 12911820, 20108584, -8101676, -21722536, -8613148, 16250552, -11111103\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -19765507, 2390526, -16551031, 14161980, 1905286, 6414907, 4689584, 10604807, -30190403, 4782747\r\n ]), new FieldElement([\r\n -1354539, 14736941, -7367442, -13292886, 7710542, -14155590, -9981571, 4383045, 22546403, 437323\r\n ]), new FieldElement([\r\n 31665577, -12180464, -16186830, 1491339, -18368625, 3294682, 27343084, 2786261, -30633590, -14097016\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -14467279, -683715, -33374107, 7448552, 19294360, 14334329, -19690631, 2355319, -19284671, -6114373\r\n ]), new FieldElement([\r\n 15121312, -15796162, 6377020, -6031361, -10798111, -12957845, 18952177, 15496498, -29380133, 11754228\r\n ]), new FieldElement([\r\n -2637277, -13483075, 8488727, -14303896, 12728761, -1622493, 7141596, 11724556, 22761615, -10134141\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n 16918416, 11729663, -18083579, 3022987, -31015732, -13339659, -28741185, -12227393, 32851222, 11717399\r\n ]), new FieldElement([\r\n 11166634, 7338049, -6722523, 4531520, -29468672, -7302055, 31474879, 3483633, -1193175, -4030831\r\n ]), new FieldElement([\r\n -185635, 9921305, 31456609, -13536438, -12013818, 13348923, 33142652, 6546660, -19985279, -3948376\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -32460596, 11266712, -11197107, -7899103, 31703694, 3855903, -8537131, -12833048, -30772034, -15486313\r\n ]), new FieldElement([\r\n -18006477, 12709068, 3991746, -6479188, -21491523, -10550425, -31135347, -16049879, 10928917, 3011958\r\n ]), new FieldElement([\r\n -6957757, -15594337, 31696059, 334240, 29576716, 14796075, -30831056, -12805180, 18008031, 10258577\r\n ])),\r\n new PreComputedGroupElement(new FieldElement([\r\n -22448644, 15655569, 7018479, -4410003, -30314266, -1201591, -1853465, 1367120, 25127874, 6671743\r\n ]), new FieldElement([\r\n 29701166, -14373934, -10878120, 9279288, -17568, 13127210, 21382910, 11042292, 25838796, 4642684\r\n ]), new FieldElement([\r\n -20430234, 14955537, -24126347, 8124619, -5369288, -5990470, 30468147, -13900640, 18423289, 4177476\r\n ]))\r\n ]\r\n];\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { CachedGroupElement } from \"./cachedGroupElement.mjs\";\r\nimport { CompletedGroupElement } from \"./completedGroupElement.mjs\";\r\nimport { CONST_BI } from \"./const.mjs\";\r\nimport { ExtendedGroupElement } from \"./extendedGroupElement.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 *\r\n * y^2 where d = -121665/121666\r\n * ProjectiveGroupElement: (X:Y:Z) satisfying x=X/Z, y=Y/Z.\r\n */\r\nexport class ProjectiveGroupElement {\r\n /**\r\n * Create a new instance of CompletedGroupElement.\r\n * @param X The X element.\r\n * @param Y The Y Element.\r\n * @param Z The Z Element.\r\n */\r\n constructor(X, Y, Z) {\r\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\r\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n }\r\n /**\r\n * Zero the elements.\r\n */\r\n zero() {\r\n this.X.zero();\r\n this.Y.one();\r\n this.Z.one();\r\n }\r\n /**\r\n * Double the elements.\r\n * @param r The elements.\r\n */\r\n double(r) {\r\n const t0 = new FieldElement();\r\n r.X.square(this.X);\r\n r.Z.square(this.Y);\r\n r.T.square2(this.Z);\r\n r.Y.add(this.X, this.Y);\r\n t0.square(r.Y);\r\n r.Y.add(r.Z, r.X);\r\n r.Z.sub(r.Z, r.X);\r\n r.X.sub(t0, r.Y);\r\n r.T.sub(r.T, r.Z);\r\n }\r\n /**\r\n * Convert to extended form.\r\n * @param r The extended element.\r\n */\r\n toExtended(r) {\r\n r.X.mul(this.X, this.Z);\r\n r.Y.mul(this.Y, this.Z);\r\n r.Z.square(this.Z);\r\n r.T.mul(this.X, this.Y);\r\n }\r\n /**\r\n * Convert the element to bytes.\r\n * @param s The bytes.\r\n */\r\n toBytes(s) {\r\n const recip = new FieldElement();\r\n const x = new FieldElement();\r\n const y = new FieldElement();\r\n recip.invert(this.Z);\r\n x.mul(this.X, recip);\r\n y.mul(this.Y, recip);\r\n y.toBytes(s);\r\n s[31] ^= x.isNegative() << 7;\r\n }\r\n /**\r\n * GeDoubleScalarMultVartime sets r = a*A + b*B\r\n * where a = a[0]+256*a[1]+...+256^31 a[31]\r\n * and b = b[0]+256*b[1]+...+256^31 b[31]\r\n * B is the Ed25519 base point (x,4/5) with x positive.\r\n * @param a The a.\r\n * @param A The A.\r\n * @param b The b.\r\n */\r\n doubleScalarMultVartime(a, A, b) {\r\n const aSlide = new Int8Array(256);\r\n const bSlide = new Int8Array(256);\r\n const ai = [\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement(),\r\n new CachedGroupElement()\r\n ]; // A,3A,5A,7A,9A,11A,13A,15A\r\n const t = new CompletedGroupElement();\r\n const u = new ExtendedGroupElement();\r\n const A2 = new ExtendedGroupElement();\r\n let i;\r\n this.slide(aSlide, a);\r\n this.slide(bSlide, b);\r\n A.toCached(ai[0]);\r\n A.double(t);\r\n t.toExtended(A2);\r\n for (i = 0; i < 7; i++) {\r\n t.add(A2, ai[i]);\r\n t.toExtended(u);\r\n u.toCached(ai[i + 1]);\r\n }\r\n this.zero();\r\n for (i = 255; i >= 0; i--) {\r\n if (aSlide[i] !== 0 || bSlide[i] !== 0) {\r\n break;\r\n }\r\n }\r\n for (; i >= 0; i--) {\r\n this.double(t);\r\n if (aSlide[i] > 0) {\r\n t.toExtended(u);\r\n t.add(u, ai[Math.floor(aSlide[i] / 2)]);\r\n }\r\n else if (aSlide[i] < 0) {\r\n t.toExtended(u);\r\n t.sub(u, ai[Math.floor(-aSlide[i] / 2)]);\r\n }\r\n if (bSlide[i] > 0) {\r\n t.toExtended(u);\r\n t.mixedAdd(u, CONST_BI[Math.floor(bSlide[i] / 2)]);\r\n }\r\n else if (bSlide[i] < 0) {\r\n t.toExtended(u);\r\n t.mixedSub(u, CONST_BI[Math.floor(-bSlide[i] / 2)]);\r\n }\r\n t.toProjective(this);\r\n }\r\n }\r\n /**\r\n * Perform the slide.\r\n * @param r The r.\r\n * @param a The a.\r\n */\r\n slide(r, a) {\r\n let i;\r\n for (i = 0; i < r.length; i++) {\r\n r[i] = 1 & (a[i >> 3] >> (i & 7));\r\n }\r\n for (i = 0; i < r.length; i++) {\r\n if (r[i] !== 0) {\r\n for (let b = 1; b <= 6 && i + b < 256; b++) {\r\n if (r[i + b] !== 0) {\r\n if (r[i] + (r[i + b] << b) <= 15) {\r\n r[i] += r[i + b] << b;\r\n r[i + b] = 0;\r\n }\r\n else if (r[i] - (r[i + b] << b) >= -15) {\r\n r[i] -= r[i + b] << b;\r\n for (let k = i + b; k < 256; k++) {\r\n if (r[k] === 0) {\r\n r[k] = 1;\r\n break;\r\n }\r\n r[k] = 0;\r\n }\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable no-mixed-operators */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which is in turn a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { ArrayHelper } from \"../../utils/arrayHelper.mjs\";\r\nimport { CachedGroupElement } from \"./cachedGroupElement.mjs\";\r\nimport { CompletedGroupElement } from \"./completedGroupElement.mjs\";\r\nimport { CONST_D, CONST_D2, CONST_SQRT_M1 } from \"./const.mjs\";\r\nimport { FieldElement } from \"./fieldElement.mjs\";\r\nimport { PreComputedGroupElement } from \"./preComputedGroupElement.mjs\";\r\nimport { ProjectiveGroupElement } from \"./projectiveGroupElement.mjs\";\r\n/**\r\n * Group elements are members of the elliptic curve -x^2 + y^2 = 1 + d * x^2 * y^2 where d = -121665/121666.\r\n * ExtendedGroupElement: (X:Y:Z:T) satisfying x=X/Z, y=Y/Z, XY=ZT.\r\n */\r\nexport class ExtendedGroupElement {\r\n /**\r\n * Create a new instance of ExtendedGroupElement.\r\n * @param X The X element.\r\n * @param Y The Y Element.\r\n * @param Z The Z Element.\r\n * @param T The T Element.\r\n */\r\n constructor(X, Y, Z, T) {\r\n this.X = X !== null && X !== void 0 ? X : new FieldElement();\r\n this.Y = Y !== null && Y !== void 0 ? Y : new FieldElement();\r\n this.Z = Z !== null && Z !== void 0 ? Z : new FieldElement();\r\n this.T = T !== null && T !== void 0 ? T : new FieldElement();\r\n }\r\n /**\r\n * Zero the elements.\r\n */\r\n zero() {\r\n this.X.zero();\r\n this.Y.one();\r\n this.Z.one();\r\n this.T.zero();\r\n }\r\n /**\r\n * Double the element.\r\n * @param cachedGroupElement The element to populate.\r\n */\r\n double(cachedGroupElement) {\r\n const q = new ProjectiveGroupElement();\r\n this.toProjective(q);\r\n q.double(cachedGroupElement);\r\n }\r\n /**\r\n * Convert to a cached group element.\r\n * @param cacheGroupElement The element to populate.\r\n */\r\n toCached(cacheGroupElement) {\r\n cacheGroupElement.yPlusX.add(this.Y, this.X);\r\n cacheGroupElement.yMinusX.sub(this.Y, this.X);\r\n cacheGroupElement.Z = this.Z.clone();\r\n cacheGroupElement.T2d.mul(this.T, CONST_D2);\r\n }\r\n /**\r\n * Convert to a projective group element.\r\n * @param projectiveGroupElement The element to populate.\r\n */\r\n toProjective(projectiveGroupElement) {\r\n projectiveGroupElement.X = this.X.clone();\r\n projectiveGroupElement.Y = this.Y.clone();\r\n projectiveGroupElement.Z = this.Z.clone();\r\n }\r\n /**\r\n * Convert the element to bytes.\r\n * @param bytes The array to store the bytes in.\r\n */\r\n toBytes(bytes) {\r\n const recip = new FieldElement();\r\n const x = new FieldElement();\r\n const y = new FieldElement();\r\n recip.invert(this.Z);\r\n x.mul(this.X, recip);\r\n y.mul(this.Y, recip);\r\n y.toBytes(bytes);\r\n bytes[31] ^= x.isNegative() << 7;\r\n }\r\n /**\r\n * Populate the element from bytes.\r\n * @param bytes The butes to populate from.\r\n * @returns False is non-zero check.\r\n */\r\n fromBytes(bytes) {\r\n const u = new FieldElement();\r\n const v = new FieldElement();\r\n const v3 = new FieldElement();\r\n const vxx = new FieldElement();\r\n const check = new FieldElement();\r\n let i;\r\n this.Y.fromBytes(bytes);\r\n this.Z.one();\r\n u.square(this.Y);\r\n v.mul(u, CONST_D);\r\n u.sub(u, this.Z); // y = y^2-1\r\n v.add(v, this.Z); // v = dy^2+1\r\n v3.square(v);\r\n v3.mul(v3, v); // v3 = v^3\r\n this.X.square(v3);\r\n this.X.mul(this.X, v);\r\n this.X.mul(this.X, u); // x = uv^7\r\n this.X.pow22523(this.X); // x = (uv^7)^((q-5)/8)\r\n this.X.mul(this.X, v3);\r\n this.X.mul(this.X, u); // x = uv^3(uv^7)^((q-5)/8)\r\n const tmpX = new Uint8Array(32);\r\n const tmp2 = new Uint8Array(32);\r\n vxx.square(this.X);\r\n vxx.mul(vxx, v);\r\n check.sub(vxx, u); // vx^2-u\r\n if (check.isNonZero() === 1) {\r\n check.add(vxx, u); // vx^2+u\r\n if (check.isNonZero() === 1) {\r\n return false;\r\n }\r\n this.X.mul(this.X, CONST_SQRT_M1);\r\n this.X.toBytes(tmpX);\r\n for (i = 0; i < tmpX.length; i++) {\r\n tmp2[31 - i] = tmpX[i];\r\n }\r\n }\r\n if (this.X.isNegative() !== bytes[31] >> 7) {\r\n this.X.neg();\r\n }\r\n this.T.mul(this.X, this.Y);\r\n return true;\r\n }\r\n /**\r\n * GeScalarMultBase computes h = a*B, where\r\n * a = a[0]+256*a[1]+...+256^31 a[31]\r\n * b is the Ed25519 base point (x,4/5) with x positive.\r\n *\r\n * Preconditions:\r\n * A[31] <= 127.\r\n * @param a The a.\r\n */\r\n scalarMultBase(a) {\r\n const e = new Int8Array(64);\r\n for (let i = 0; i < a.length; i++) {\r\n e[2 * i] = a[i] & 15;\r\n e[2 * i + 1] = (a[i] >> 4) & 15;\r\n }\r\n // each e[i] is between 0 and 15 and e[63] is between 0 and 7.\r\n let carry = 0;\r\n for (let i = 0; i < 63; i++) {\r\n e[i] += carry;\r\n carry = (e[i] + 8) >> 4;\r\n e[i] -= carry << 4;\r\n }\r\n e[63] += carry;\r\n // each e[i] is between -8 and 8.\r\n this.zero();\r\n const t = new PreComputedGroupElement();\r\n const r = new CompletedGroupElement();\r\n for (let i = 1; i < 64; i += 2) {\r\n t.selectPoint(Math.floor(i / 2), e[i]);\r\n r.mixedAdd(this, t);\r\n r.toExtended(this);\r\n }\r\n const s = new ProjectiveGroupElement();\r\n this.double(r);\r\n r.toProjective(s);\r\n s.double(r);\r\n r.toProjective(s);\r\n s.double(r);\r\n r.toProjective(s);\r\n s.double(r);\r\n r.toExtended(this);\r\n for (let i = 0; i < 64; i += 2) {\r\n t.selectPoint(i / 2, e[i]);\r\n r.mixedAdd(this, t);\r\n r.toExtended(this);\r\n }\r\n }\r\n /**\r\n * CofactorEqual checks whether p, q are equal up to cofactor multiplication\r\n * ie if their difference is of small order.\r\n * @param q The extended group element.\r\n * @returns True if they are equal.\r\n */\r\n cofactorEqual(q) {\r\n const t1 = new CachedGroupElement();\r\n const t2 = new CompletedGroupElement();\r\n const t3 = new ProjectiveGroupElement();\r\n q.toCached(t1);\r\n t2.sub(this, t1); // t2 = (P - Q)\r\n t2.toProjective(t3); // t3 = (P - Q)\r\n t3.double(t2); // t2 = [2](P - Q)\r\n t2.toProjective(t3); // t3 = [2](P - Q)\r\n t3.double(t2); // t2 = [4](P - Q)\r\n t2.toProjective(t3); // t3 = [4](P - Q)\r\n t3.double(t2); // t2 = [8](P - Q)\r\n t2.toProjective(t3); // t3 = [8](P - Q)\r\n // Now we want to check whether the point t3 is the identity.\r\n // In projective coordinates this is (X:Y:Z) ~ (0:1:0)\r\n // ie. X/Z = 0, Y/Z = 1\r\n // <=> X = 0, Y = Z\r\n const zero = new Uint8Array(32);\r\n const xBytes = new Uint8Array(32);\r\n const yBytes = new Uint8Array(32);\r\n const zBytes = new Uint8Array(32);\r\n t3.X.toBytes(xBytes);\r\n t3.Y.toBytes(yBytes);\r\n t3.Z.toBytes(zBytes);\r\n return ArrayHelper.equal(zero, xBytes) && ArrayHelper.equal(yBytes, zBytes);\r\n }\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/* eslint-disable newline-per-chained-call */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus\r\n * which is an extension of https://github.com/golang/crypto/tree/master/ed25519\r\n * which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { BigIntHelper } from \"@iota/util.js\";\r\nimport bigInt from \"big-integer\";\r\nimport { BIG_136657, BIG_1_SHIFTL_20, BIG_2097151, BIG_470296, BIG_654183, BIG_666643, BIG_683901, BIG_997805, BIG_ARR } from \"./bigIntCommon.mjs\";\r\nimport { CONST_ORDER } from \"./const.mjs\";\r\n/**\r\n * The scalars are GF(2^252 + 27742317777372353535851937790883648493).\r\n *\r\n * Input\r\n * a[0]+256*a[1]+...+256^31*a[31] = a\r\n * b[0]+256*b[1]+...+256^31*b[31] = b\r\n * c[0]+256*c[1]+...+256^31*c[31] = c.\r\n *\r\n * Output\r\n * s[0]+256*s[1]+...+256^31*s[31] = (ab+c) mod l\r\n * where l = 2^252 + 27742317777372353535851937790883648493.\r\n * @param s The scalar.\r\n * @param a The a.\r\n * @param b The b.\r\n * @param c The c.\r\n */\r\nexport function scalarMulAdd(s, a, b, c) {\r\n const a0 = BIG_2097151.and(BigIntHelper.read3(a, 0));\r\n const a1 = BIG_2097151.and(BigIntHelper.read4(a, 2).shiftRight(BIG_ARR[5]));\r\n const a2 = BIG_2097151.and(BigIntHelper.read3(a, 5).shiftRight(BIG_ARR[2]));\r\n const a3 = BIG_2097151.and(BigIntHelper.read4(a, 7).shiftRight(BIG_ARR[7]));\r\n const a4 = BIG_2097151.and(BigIntHelper.read4(a, 10).shiftRight(BIG_ARR[4]));\r\n const a5 = BIG_2097151.and(BigIntHelper.read3(a, 13).shiftRight(BIG_ARR[1]));\r\n const a6 = BIG_2097151.and(BigIntHelper.read4(a, 15).shiftRight(BIG_ARR[6]));\r\n const a7 = BIG_2097151.and(BigIntHelper.read3(a, 18).shiftRight(BIG_ARR[3]));\r\n const a8 = BIG_2097151.and(BigIntHelper.read3(a, 21));\r\n const a9 = BIG_2097151.and(BigIntHelper.read4(a, 23).shiftRight(BIG_ARR[5]));\r\n const a10 = BIG_2097151.and(BigIntHelper.read3(a, 26).shiftRight(BIG_ARR[2]));\r\n const a11 = BigIntHelper.read4(a, 28).shiftRight(BIG_ARR[7]);\r\n const b0 = BIG_2097151.and(BigIntHelper.read3(b, 0));\r\n const b1 = BIG_2097151.and(BigIntHelper.read4(b, 2).shiftRight(BIG_ARR[5]));\r\n const b2 = BIG_2097151.and(BigIntHelper.read3(b, 5).shiftRight(BIG_ARR[2]));\r\n const b3 = BIG_2097151.and(BigIntHelper.read4(b, 7).shiftRight(BIG_ARR[7]));\r\n const b4 = BIG_2097151.and(BigIntHelper.read4(b, 10).shiftRight(BIG_ARR[4]));\r\n const b5 = BIG_2097151.and(BigIntHelper.read3(b, 13).shiftRight(BIG_ARR[1]));\r\n const b6 = BIG_2097151.and(BigIntHelper.read4(b, 15).shiftRight(BIG_ARR[6]));\r\n const b7 = BIG_2097151.and(BigIntHelper.read3(b, 18).shiftRight(BIG_ARR[3]));\r\n const b8 = BIG_2097151.and(BigIntHelper.read3(b, 21));\r\n const b9 = BIG_2097151.and(BigIntHelper.read4(b, 23).shiftRight(BIG_ARR[5]));\r\n const b10 = BIG_2097151.and(BigIntHelper.read3(b, 26).shiftRight(BIG_ARR[2]));\r\n const b11 = BigIntHelper.read4(b, 28).shiftRight(BIG_ARR[7]);\r\n const c0 = BIG_2097151.and(BigIntHelper.read3(c, 0));\r\n const c1 = BIG_2097151.and(BigIntHelper.read4(c, 2).shiftRight(BIG_ARR[5]));\r\n const c2 = BIG_2097151.and(BigIntHelper.read3(c, 5).shiftRight(BIG_ARR[2]));\r\n const c3 = BIG_2097151.and(BigIntHelper.read4(c, 7).shiftRight(BIG_ARR[7]));\r\n const c4 = BIG_2097151.and(BigIntHelper.read4(c, 10).shiftRight(BIG_ARR[4]));\r\n const c5 = BIG_2097151.and(BigIntHelper.read3(c, 13).shiftRight(BIG_ARR[1]));\r\n const c6 = BIG_2097151.and(BigIntHelper.read4(c, 15).shiftRight(BIG_ARR[6]));\r\n const c7 = BIG_2097151.and(BigIntHelper.read3(c, 18).shiftRight(BIG_ARR[3]));\r\n const c8 = BIG_2097151.and(BigIntHelper.read3(c, 21));\r\n const c9 = BIG_2097151.and(BigIntHelper.read4(c, 23).shiftRight(BIG_ARR[5]));\r\n const c10 = BIG_2097151.and(BigIntHelper.read3(c, 26).shiftRight(BIG_ARR[2]));\r\n const c11 = BigIntHelper.read4(c, 28).shiftRight(BIG_ARR[7]);\r\n const carry = [];\r\n for (let i = 0; i < 32; i++) {\r\n carry[i] = bigInt(0);\r\n }\r\n let s0 = c0.add(a0.times(b0));\r\n let s1 = c1.add(a0.times(b1).add(a1.times(b0)));\r\n let s2 = c2.add(a0.times(b2).add(a1.times(b1)).add(a2.times(b0)));\r\n let s3 = c3.add(a0.times(b3).add(a1.times(b2)).add(a2.times(b1)).add(a3.times(b0)));\r\n let s4 = c4.add(a0.times(b4).add(a1.times(b3)).add(a2.times(b2)).add(a3.times(b1)).add(a4.times(b0)));\r\n let s5 = c5.add(a0.times(b5).add(a1.times(b4)).add(a2.times(b3)).add(a3.times(b2)).add(a4.times(b1)).add(a5.times(b0)));\r\n let s6 = c6.add(a0\r\n .times(b6)\r\n .add(a1.times(b5))\r\n .add(a2.times(b4))\r\n .add(a3.times(b3))\r\n .add(a4.times(b2))\r\n .add(a5.times(b1))\r\n .add(a6.times(b0)));\r\n let s7 = c7\r\n .add(a0\r\n .times(b7)\r\n .add(a1.times(b6))\r\n .add(a2.times(b5))\r\n .add(a3.times(b4))\r\n .add(a4.times(b3))\r\n .add(a5.times(b2))\r\n .add(a6.times(b1)))\r\n .add(a7.times(b0));\r\n let s8 = c8.add(a0\r\n .times(b8)\r\n .add(a1.times(b7))\r\n .add(a2.times(b6))\r\n .add(a3.times(b5))\r\n .add(a4.times(b4))\r\n .add(a5.times(b3))\r\n .add(a6.times(b2))\r\n .add(a7.times(b1))\r\n .add(a8.times(b0)));\r\n let s9 = c9\r\n .add(a0.times(b9))\r\n .add(a1.times(b8))\r\n .add(a2.times(b7))\r\n .add(a3.times(b6))\r\n .add(a4.times(b5))\r\n .add(a5.times(b4))\r\n .add(a6.times(b3))\r\n .add(a7.times(b2))\r\n .add(a8.times(b1))\r\n .add(a9.times(b0));\r\n let s10 = c10\r\n .add(a0.times(b10))\r\n .add(a1.times(b9))\r\n .add(a2.times(b8))\r\n .add(a3.times(b7))\r\n .add(a4.times(b6))\r\n .add(a5.times(b5))\r\n .add(a6.times(b4))\r\n .add(a7.times(b3))\r\n .add(a8.times(b2))\r\n .add(a9.times(b1))\r\n .add(a10.times(b0));\r\n let s11 = c11\r\n .add(a0.times(b11))\r\n .add(a1.times(b10))\r\n .add(a2.times(b9))\r\n .add(a3.times(b8))\r\n .add(a4.times(b7))\r\n .add(a5.times(b6))\r\n .add(a6.times(b5))\r\n .add(a7.times(b4))\r\n .add(a8.times(b3))\r\n .add(a9.times(b2))\r\n .add(a10.times(b1))\r\n .add(a11.times(b0));\r\n let s12 = a1\r\n .times(b11)\r\n .add(a2.times(b10))\r\n .add(a3.times(b9))\r\n .add(a4.times(b8))\r\n .add(a5.times(b7))\r\n .add(a6.times(b6))\r\n .add(a7.times(b5))\r\n .add(a8.times(b4))\r\n .add(a9.times(b3))\r\n .add(a10.times(b2))\r\n .add(a11.times(b1));\r\n let s13 = a2\r\n .times(b11)\r\n .add(a3.times(b10))\r\n .add(a4.times(b9))\r\n .add(a5.times(b8))\r\n .add(a6.times(b7))\r\n .add(a7.times(b6))\r\n .add(a8.times(b5))\r\n .add(a9.times(b4))\r\n .add(a10.times(b3))\r\n .add(a11.times(b2));\r\n let s14 = a3\r\n .times(b11)\r\n .add(a4.times(b10))\r\n .add(a5.times(b9))\r\n .add(a6.times(b8))\r\n .add(a7.times(b7))\r\n .add(a8.times(b6))\r\n .add(a9.times(b5))\r\n .add(a10.times(b4))\r\n .add(a11.times(b3));\r\n let s15 = a4\r\n .times(b11)\r\n .add(a5.times(b10))\r\n .add(a6.times(b9))\r\n .add(a7.times(b8))\r\n .add(a8.times(b7))\r\n .add(a9.times(b6))\r\n .add(a10.times(b5))\r\n .add(a11.times(b4));\r\n let s16 = a5\r\n .times(b11)\r\n .add(a6.times(b10))\r\n .add(a7.times(b9))\r\n .add(a8.times(b8))\r\n .add(a9.times(b7))\r\n .add(a10.times(b6))\r\n .add(a11.times(b5));\r\n let s17 = a6\r\n .times(b11)\r\n .add(a7.times(b10))\r\n .add(a8.times(b9))\r\n .add(a9.times(b8))\r\n .add(a10.times(b7))\r\n .add(a11.times(b6));\r\n let s18 = a7.times(b11).add(a8.times(b10)).add(a9.times(b9)).add(a10.times(b8)).add(a11.times(b7));\r\n let s19 = a8.times(b11).add(a9.times(b10)).add(a10.times(b9)).add(a11.times(b8));\r\n let s20 = a9.times(b11).add(a10.times(b10)).add(a11.times(b9));\r\n let s21 = a10.times(b11).add(a11.times(b10));\r\n let s22 = a11.times(b11);\r\n let s23 = BIG_ARR[0];\r\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s13 = s13.add(carry[12]);\r\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\r\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s15 = s15.add(carry[14]);\r\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\r\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s17 = s17.add(carry[16]);\r\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\r\n carry[18] = s18.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s19 = s19.add(carry[18]);\r\n s18 = s18.minus(carry[18].shiftLeft(BIG_ARR[21]));\r\n carry[20] = s20.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s21 = s21.add(carry[20]);\r\n s20 = s20.minus(carry[20].shiftLeft(BIG_ARR[21]));\r\n carry[22] = s22.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s23 = s23.add(carry[22]);\r\n s22 = s22.minus(carry[22].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s14 = s14.add(carry[13]);\r\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\r\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s16 = s16.add(carry[15]);\r\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\r\n carry[17] = s17.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s18 = s18.add(carry[17]);\r\n s17 = s17.minus(carry[17].shiftLeft(BIG_ARR[21]));\r\n carry[19] = s19.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s20 = s20.add(carry[19]);\r\n s19 = s19.minus(carry[19].shiftLeft(BIG_ARR[21]));\r\n carry[21] = s21.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s22 = s22.add(carry[21]);\r\n s21 = s21.minus(carry[21].shiftLeft(BIG_ARR[21]));\r\n s11 = s11.add(s23.times(BIG_666643));\r\n s12 = s12.add(s23.times(BIG_470296));\r\n s13 = s13.add(s23.times(BIG_654183));\r\n s14 = s14.minus(s23.times(BIG_997805));\r\n s15 = s15.add(s23.times(BIG_136657));\r\n s16 = s16.minus(s23.times(BIG_683901));\r\n s23 = BIG_ARR[0];\r\n s10 = s10.add(s22.times(BIG_666643));\r\n s11 = s11.add(s22.times(BIG_470296));\r\n s12 = s12.add(s22.times(BIG_654183));\r\n s13 = s13.minus(s22.times(BIG_997805));\r\n s14 = s14.add(s22.times(BIG_136657));\r\n s15 = s15.minus(s22.times(BIG_683901));\r\n s22 = BIG_ARR[0];\r\n s9 = s9.add(s21.times(BIG_666643));\r\n s10 = s10.add(s21.times(BIG_470296));\r\n s11 = s11.add(s21.times(BIG_654183));\r\n s12 = s12.minus(s21.times(BIG_997805));\r\n s13 = s13.add(s21.times(BIG_136657));\r\n s14 = s14.minus(s21.times(BIG_683901));\r\n s21 = BIG_ARR[0];\r\n s8 = s8.add(s20.times(BIG_666643));\r\n s9 = s9.add(s20.times(BIG_470296));\r\n s10 = s10.add(s20.times(BIG_654183));\r\n s11 = s11.minus(s20.times(BIG_997805));\r\n s12 = s12.add(s20.times(BIG_136657));\r\n s13 = s13.minus(s20.times(BIG_683901));\r\n s20 = BIG_ARR[0];\r\n s7 = s7.add(s19.times(BIG_666643));\r\n s8 = s8.add(s19.times(BIG_470296));\r\n s9 = s9.add(s19.times(BIG_654183));\r\n s10 = s10.minus(s19.times(BIG_997805));\r\n s11 = s11.add(s19.times(BIG_136657));\r\n s12 = s12.minus(s19.times(BIG_683901));\r\n s19 = BIG_ARR[0];\r\n s6 = s6.add(s18.times(BIG_666643));\r\n s7 = s7.add(s18.times(BIG_470296));\r\n s8 = s8.add(s18.times(BIG_654183));\r\n s9 = s9.minus(s18.times(BIG_997805));\r\n s10 = s10.add(s18.times(BIG_136657));\r\n s11 = s11.minus(s18.times(BIG_683901));\r\n s18 = BIG_ARR[0];\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s13 = s13.add(carry[12]);\r\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\r\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s15 = s15.add(carry[14]);\r\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\r\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s17 = s17.add(carry[16]);\r\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s14 = s14.add(carry[13]);\r\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\r\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s16 = s16.add(carry[15]);\r\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\r\n s5 = s5.add(s17.times(BIG_666643));\r\n s6 = s6.add(s17.times(BIG_470296));\r\n s7 = s7.add(s17.times(BIG_654183));\r\n s8 = s8.minus(s17.times(BIG_997805));\r\n s9 = s9.add(s17.times(BIG_136657));\r\n s10 = s10.minus(s17.times(BIG_683901));\r\n s17 = BIG_ARR[0];\r\n s4 = s4.add(s16.times(BIG_666643));\r\n s5 = s5.add(s16.times(BIG_470296));\r\n s6 = s6.add(s16.times(BIG_654183));\r\n s7 = s7.minus(s16.times(BIG_997805));\r\n s8 = s8.add(s16.times(BIG_136657));\r\n s9 = s9.minus(s16.times(BIG_683901));\r\n s16 = BIG_ARR[0];\r\n s3 = s3.add(s15.times(BIG_666643));\r\n s4 = s4.add(s15.times(BIG_470296));\r\n s5 = s5.add(s15.times(BIG_654183));\r\n s6 = s6.minus(s15.times(BIG_997805));\r\n s7 = s7.add(s15.times(BIG_136657));\r\n s8 = s8.minus(s15.times(BIG_683901));\r\n s15 = BIG_ARR[0];\r\n s2 = s2.add(s14.times(BIG_666643));\r\n s3 = s3.add(s14.times(BIG_470296));\r\n s4 = s4.add(s14.times(BIG_654183));\r\n s5 = s5.minus(s14.times(BIG_997805));\r\n s6 = s6.add(s14.times(BIG_136657));\r\n s7 = s7.minus(s14.times(BIG_683901));\r\n s14 = BIG_ARR[0];\r\n s1 = s1.add(s13.times(BIG_666643));\r\n s2 = s2.add(s13.times(BIG_470296));\r\n s3 = s3.add(s13.times(BIG_654183));\r\n s4 = s4.minus(s13.times(BIG_997805));\r\n s5 = s5.add(s13.times(BIG_136657));\r\n s6 = s6.minus(s13.times(BIG_683901));\r\n s13 = BIG_ARR[0];\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n s[0] = s0.shiftRight(BIG_ARR[0]).toJSNumber();\r\n s[1] = s0.shiftRight(BIG_ARR[8]).toJSNumber();\r\n s[2] = s0.shiftRight(BIG_ARR[16]).or(s1.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n s[3] = s1.shiftRight(BIG_ARR[3]).toJSNumber();\r\n s[4] = s1.shiftRight(BIG_ARR[11]).toJSNumber();\r\n s[5] = s1.shiftRight(BIG_ARR[19]).or(s2.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n s[6] = s2.shiftRight(BIG_ARR[6]).toJSNumber();\r\n s[7] = s2.shiftRight(BIG_ARR[14]).or(s3.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n s[8] = s3.shiftRight(BIG_ARR[1]).toJSNumber();\r\n s[9] = s3.shiftRight(BIG_ARR[9]).toJSNumber();\r\n s[10] = s3.shiftRight(BIG_ARR[17]).or(s4.shiftLeft(BIG_ARR[4])).toJSNumber();\r\n s[11] = s4.shiftRight(BIG_ARR[4]).toJSNumber();\r\n s[12] = s4.shiftRight(BIG_ARR[12]).toJSNumber();\r\n s[13] = s4.shiftRight(BIG_ARR[20]).or(s5.shiftLeft(BIG_ARR[1])).toJSNumber();\r\n s[14] = s5.shiftRight(BIG_ARR[7]).toJSNumber();\r\n s[15] = s5.shiftRight(BIG_ARR[15]).or(s6.shiftLeft(BIG_ARR[6])).toJSNumber();\r\n s[16] = s6.shiftRight(BIG_ARR[2]).toJSNumber();\r\n s[17] = s6.shiftRight(BIG_ARR[10]).toJSNumber();\r\n s[18] = s6.shiftRight(BIG_ARR[18]).or(s7.shiftLeft(BIG_ARR[3])).toJSNumber();\r\n s[19] = s7.shiftRight(BIG_ARR[5]).toJSNumber();\r\n s[20] = s7.shiftRight(BIG_ARR[13]).toJSNumber();\r\n s[21] = s8.shiftRight(BIG_ARR[0]).toJSNumber();\r\n s[22] = s8.shiftRight(BIG_ARR[8]).toJSNumber();\r\n s[23] = s8.shiftRight(BIG_ARR[16]).or(s9.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n s[24] = s9.shiftRight(BIG_ARR[3]).toJSNumber();\r\n s[25] = s9.shiftRight(BIG_ARR[11]).toJSNumber();\r\n s[26] = s9.shiftRight(BIG_ARR[19]).or(s10.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n s[27] = s10.shiftRight(BIG_ARR[6]).toJSNumber();\r\n s[28] = s10.shiftRight(BIG_ARR[14]).or(s11.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n s[29] = s11.shiftRight(BIG_ARR[1]).toJSNumber();\r\n s[30] = s11.shiftRight(BIG_ARR[9]).toJSNumber();\r\n s[31] = s11.shiftRight(BIG_ARR[17]).toJSNumber();\r\n}\r\n/**\r\n * Scalar reduce\r\n * where l = 2^252 + 27742317777372353535851937790883648493.\r\n * @param out Where s[0]+256*s[1]+...+256^31*s[31] = s mod l.\r\n * @param s Where s[0]+256*s[1]+...+256^63*s[63] = s.\r\n */\r\nexport function scalarReduce(out, s) {\r\n let s0 = BIG_2097151.and(BigIntHelper.read3(s, 0));\r\n let s1 = BIG_2097151.and(BigIntHelper.read4(s, 2).shiftRight(BIG_ARR[5]));\r\n let s2 = BIG_2097151.and(BigIntHelper.read3(s, 5).shiftRight(BIG_ARR[2]));\r\n let s3 = BIG_2097151.and(BigIntHelper.read4(s, 7).shiftRight(BIG_ARR[7]));\r\n let s4 = BIG_2097151.and(BigIntHelper.read4(s, 10).shiftRight(BIG_ARR[4]));\r\n let s5 = BIG_2097151.and(BigIntHelper.read3(s, 13).shiftRight(BIG_ARR[1]));\r\n let s6 = BIG_2097151.and(BigIntHelper.read4(s, 15).shiftRight(BIG_ARR[6]));\r\n let s7 = BIG_2097151.and(BigIntHelper.read3(s, 18).shiftRight(BIG_ARR[3]));\r\n let s8 = BIG_2097151.and(BigIntHelper.read3(s, 21));\r\n let s9 = BIG_2097151.and(BigIntHelper.read4(s, 23).shiftRight(BIG_ARR[5]));\r\n let s10 = BIG_2097151.and(BigIntHelper.read3(s, 26).shiftRight(BIG_ARR[2]));\r\n let s11 = BIG_2097151.and(BigIntHelper.read4(s, 28).shiftRight(BIG_ARR[7]));\r\n let s12 = BIG_2097151.and(BigIntHelper.read4(s, 31).shiftRight(BIG_ARR[4]));\r\n let s13 = BIG_2097151.and(BigIntHelper.read3(s, 34).shiftRight(BIG_ARR[1]));\r\n let s14 = BIG_2097151.and(BigIntHelper.read4(s, 36).shiftRight(BIG_ARR[6]));\r\n let s15 = BIG_2097151.and(BigIntHelper.read3(s, 39).shiftRight(BIG_ARR[3]));\r\n let s16 = BIG_2097151.and(BigIntHelper.read3(s, 42));\r\n let s17 = BIG_2097151.and(BigIntHelper.read4(s, 44).shiftRight(BIG_ARR[5]));\r\n let s18 = BIG_2097151.and(BigIntHelper.read3(s, 47).shiftRight(BIG_ARR[2]));\r\n let s19 = BIG_2097151.and(BigIntHelper.read4(s, 49).shiftRight(BIG_ARR[7]));\r\n let s20 = BIG_2097151.and(BigIntHelper.read4(s, 52).shiftRight(BIG_ARR[4]));\r\n let s21 = BIG_2097151.and(BigIntHelper.read3(s, 55).shiftRight(BIG_ARR[1]));\r\n let s22 = BIG_2097151.and(BigIntHelper.read4(s, 57).shiftRight(BIG_ARR[6]));\r\n let s23 = BigIntHelper.read4(s, 60).shiftRight(BIG_ARR[3]);\r\n s11 = s11.add(s23.times(BIG_666643));\r\n s12 = s12.add(s23.times(BIG_470296));\r\n s13 = s13.add(s23.times(BIG_654183));\r\n s14 = s14.minus(s23.times(BIG_997805));\r\n s15 = s15.add(s23.times(BIG_136657));\r\n s16 = s16.minus(s23.times(BIG_683901));\r\n s23 = BIG_ARR[0];\r\n s10 = s10.add(s22.times(BIG_666643));\r\n s11 = s11.add(s22.times(BIG_470296));\r\n s12 = s12.add(s22.times(BIG_654183));\r\n s13 = s13.minus(s22.times(BIG_997805));\r\n s14 = s14.add(s22.times(BIG_136657));\r\n s15 = s15.minus(s22.times(BIG_683901));\r\n s22 = BIG_ARR[0];\r\n s9 = s9.add(s21.times(BIG_666643));\r\n s10 = s10.add(s21.times(BIG_470296));\r\n s11 = s11.add(s21.times(BIG_654183));\r\n s12 = s12.minus(s21.times(BIG_997805));\r\n s13 = s13.add(s21.times(BIG_136657));\r\n s14 = s14.minus(s21.times(BIG_683901));\r\n s21 = BIG_ARR[0];\r\n s8 = s8.add(s20.times(BIG_666643));\r\n s9 = s9.add(s20.times(BIG_470296));\r\n s10 = s10.add(s20.times(BIG_654183));\r\n s11 = s11.minus(s20.times(BIG_997805));\r\n s12 = s12.add(s20.times(BIG_136657));\r\n s13 = s13.minus(s20.times(BIG_683901));\r\n s20 = BIG_ARR[0];\r\n s7 = s7.add(s19.times(BIG_666643));\r\n s8 = s8.add(s19.times(BIG_470296));\r\n s9 = s9.add(s19.times(BIG_654183));\r\n s10 = s10.minus(s19.times(BIG_997805));\r\n s11 = s11.add(s19.times(BIG_136657));\r\n s12 = s12.minus(s19.times(BIG_683901));\r\n s19 = BIG_ARR[0];\r\n s6 = s6.add(s18.times(BIG_666643));\r\n s7 = s7.add(s18.times(BIG_470296));\r\n s8 = s8.add(s18.times(BIG_654183));\r\n s9 = s9.minus(s18.times(BIG_997805));\r\n s10 = s10.add(s18.times(BIG_136657));\r\n s11 = s11.minus(s18.times(BIG_683901));\r\n s18 = BIG_ARR[0];\r\n const carry = [];\r\n for (let i = 0; i < 17; i++) {\r\n carry[i] = bigInt(0);\r\n }\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[12] = s12.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s13 = s13.add(carry[12]);\r\n s12 = s12.minus(carry[12].shiftLeft(BIG_ARR[21]));\r\n carry[14] = s14.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s15 = s15.add(carry[14]);\r\n s14 = s14.minus(carry[14].shiftLeft(BIG_ARR[21]));\r\n carry[16] = s16.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s17 = s17.add(carry[16]);\r\n s16 = s16.minus(carry[16].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n carry[13] = s13.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s14 = s14.add(carry[13]);\r\n s13 = s13.minus(carry[13].shiftLeft(BIG_ARR[21]));\r\n carry[15] = s15.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s16 = s16.add(carry[15]);\r\n s15 = s15.minus(carry[15].shiftLeft(BIG_ARR[21]));\r\n s5 = s5.add(s17.times(BIG_666643));\r\n s6 = s6.add(s17.times(BIG_470296));\r\n s7 = s7.add(s17.times(BIG_654183));\r\n s8 = s8.minus(s17.times(BIG_997805));\r\n s9 = s9.add(s17.times(BIG_136657));\r\n s10 = s10.minus(s17.times(BIG_683901));\r\n s17 = BIG_ARR[0];\r\n s4 = s4.add(s16.times(BIG_666643));\r\n s5 = s5.add(s16.times(BIG_470296));\r\n s6 = s6.add(s16.times(BIG_654183));\r\n s7 = s7.minus(s16.times(BIG_997805));\r\n s8 = s8.add(s16.times(BIG_136657));\r\n s9 = s9.minus(s16.times(BIG_683901));\r\n s16 = BIG_ARR[0];\r\n s3 = s3.add(s15.times(BIG_666643));\r\n s4 = s4.add(s15.times(BIG_470296));\r\n s5 = s5.add(s15.times(BIG_654183));\r\n s6 = s6.minus(s15.times(BIG_997805));\r\n s7 = s7.add(s15.times(BIG_136657));\r\n s8 = s8.minus(s15.times(BIG_683901));\r\n s15 = BIG_ARR[0];\r\n s2 = s2.add(s14.times(BIG_666643));\r\n s3 = s3.add(s14.times(BIG_470296));\r\n s4 = s4.add(s14.times(BIG_654183));\r\n s5 = s5.minus(s14.times(BIG_997805));\r\n s6 = s6.add(s14.times(BIG_136657));\r\n s7 = s7.minus(s14.times(BIG_683901));\r\n s14 = BIG_ARR[0];\r\n s1 = s1.add(s13.times(BIG_666643));\r\n s2 = s2.add(s13.times(BIG_470296));\r\n s3 = s3.add(s13.times(BIG_654183));\r\n s4 = s4.minus(s13.times(BIG_997805));\r\n s5 = s5.add(s13.times(BIG_136657));\r\n s6 = s6.minus(s13.times(BIG_683901));\r\n s13 = BIG_ARR[0];\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.add(BIG_1_SHIFTL_20).shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n carry[11] = s11.shiftRight(BIG_ARR[21]);\r\n s12 = s12.add(carry[11]);\r\n s11 = s11.minus(carry[11].shiftLeft(BIG_ARR[21]));\r\n s0 = s0.add(s12.times(BIG_666643));\r\n s1 = s1.add(s12.times(BIG_470296));\r\n s2 = s2.add(s12.times(BIG_654183));\r\n s3 = s3.minus(s12.times(BIG_997805));\r\n s4 = s4.add(s12.times(BIG_136657));\r\n s5 = s5.minus(s12.times(BIG_683901));\r\n s12 = BIG_ARR[0];\r\n carry[0] = s0.shiftRight(BIG_ARR[21]);\r\n s1 = s1.add(carry[0]);\r\n s0 = s0.minus(carry[0].shiftLeft(BIG_ARR[21]));\r\n carry[1] = s1.shiftRight(BIG_ARR[21]);\r\n s2 = s2.add(carry[1]);\r\n s1 = s1.minus(carry[1].shiftLeft(BIG_ARR[21]));\r\n carry[2] = s2.shiftRight(BIG_ARR[21]);\r\n s3 = s3.add(carry[2]);\r\n s2 = s2.minus(carry[2].shiftLeft(BIG_ARR[21]));\r\n carry[3] = s3.shiftRight(BIG_ARR[21]);\r\n s4 = s4.add(carry[3]);\r\n s3 = s3.minus(carry[3].shiftLeft(BIG_ARR[21]));\r\n carry[4] = s4.shiftRight(BIG_ARR[21]);\r\n s5 = s5.add(carry[4]);\r\n s4 = s4.minus(carry[4].shiftLeft(BIG_ARR[21]));\r\n carry[5] = s5.shiftRight(BIG_ARR[21]);\r\n s6 = s6.add(carry[5]);\r\n s5 = s5.minus(carry[5].shiftLeft(BIG_ARR[21]));\r\n carry[6] = s6.shiftRight(BIG_ARR[21]);\r\n s7 = s7.add(carry[6]);\r\n s6 = s6.minus(carry[6].shiftLeft(BIG_ARR[21]));\r\n carry[7] = s7.shiftRight(BIG_ARR[21]);\r\n s8 = s8.add(carry[7]);\r\n s7 = s7.minus(carry[7].shiftLeft(BIG_ARR[21]));\r\n carry[8] = s8.shiftRight(BIG_ARR[21]);\r\n s9 = s9.add(carry[8]);\r\n s8 = s8.minus(carry[8].shiftLeft(BIG_ARR[21]));\r\n carry[9] = s9.shiftRight(BIG_ARR[21]);\r\n s10 = s10.add(carry[9]);\r\n s9 = s9.minus(carry[9].shiftLeft(BIG_ARR[21]));\r\n carry[10] = s10.shiftRight(BIG_ARR[21]);\r\n s11 = s11.add(carry[10]);\r\n s10 = s10.minus(carry[10].shiftLeft(BIG_ARR[21]));\r\n out[0] = s0.shiftRight(BIG_ARR[0]).toJSNumber();\r\n out[1] = s0.shiftRight(BIG_ARR[8]).toJSNumber();\r\n out[2] = s0.shiftRight(BIG_ARR[16]).or(s1.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n out[3] = s1.shiftRight(BIG_ARR[3]).toJSNumber();\r\n out[4] = s1.shiftRight(BIG_ARR[11]).toJSNumber();\r\n out[5] = s1.shiftRight(BIG_ARR[19]).or(s2.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n out[6] = s2.shiftRight(BIG_ARR[6]).toJSNumber();\r\n out[7] = s2.shiftRight(BIG_ARR[14]).or(s3.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n out[8] = s3.shiftRight(BIG_ARR[1]).toJSNumber();\r\n out[9] = s3.shiftRight(BIG_ARR[9]).toJSNumber();\r\n out[10] = s3.shiftRight(BIG_ARR[17]).or(s4.shiftLeft(BIG_ARR[4])).toJSNumber();\r\n out[11] = s4.shiftRight(BIG_ARR[4]).toJSNumber();\r\n out[12] = s4.shiftRight(BIG_ARR[12]).toJSNumber();\r\n out[13] = s4.shiftRight(BIG_ARR[20]).or(s5.shiftLeft(BIG_ARR[1])).toJSNumber();\r\n out[14] = s5.shiftRight(BIG_ARR[7]).toJSNumber();\r\n out[15] = s5.shiftRight(BIG_ARR[15]).or(s6.shiftLeft(BIG_ARR[6])).toJSNumber();\r\n out[16] = s6.shiftRight(BIG_ARR[2]).toJSNumber();\r\n out[17] = s6.shiftRight(BIG_ARR[10]).toJSNumber();\r\n out[18] = s6.shiftRight(BIG_ARR[18]).or(s7.shiftLeft(BIG_ARR[3])).toJSNumber();\r\n out[19] = s7.shiftRight(BIG_ARR[5]).toJSNumber();\r\n out[20] = s7.shiftRight(BIG_ARR[13]).toJSNumber();\r\n out[21] = s8.shiftRight(BIG_ARR[0]).toJSNumber();\r\n out[22] = s8.shiftRight(BIG_ARR[8]).toJSNumber();\r\n out[23] = s8.shiftRight(BIG_ARR[16]).or(s9.shiftLeft(BIG_ARR[5])).toJSNumber();\r\n out[24] = s9.shiftRight(BIG_ARR[3]).toJSNumber();\r\n out[25] = s9.shiftRight(BIG_ARR[11]).toJSNumber();\r\n out[26] = s9.shiftRight(BIG_ARR[19]).or(s10.shiftLeft(BIG_ARR[2])).toJSNumber();\r\n out[27] = s10.shiftRight(BIG_ARR[6]).toJSNumber();\r\n out[28] = s10.shiftRight(BIG_ARR[14]).or(s11.shiftLeft(BIG_ARR[7])).toJSNumber();\r\n out[29] = s11.shiftRight(BIG_ARR[1]).toJSNumber();\r\n out[30] = s11.shiftRight(BIG_ARR[9]).toJSNumber();\r\n out[31] = s11.shiftRight(BIG_ARR[17]).toJSNumber();\r\n}\r\n/**\r\n * Scalar Minimal returns true if the given scalar is less than the order of the Curve.\r\n * @param scalar The scalar.\r\n * @returns True if the given scalar is less than the order of the Curve.\r\n */\r\nexport function scalarMinimal(scalar) {\r\n for (let i = 3; i >= 0; i--) {\r\n const v = BigIntHelper.read8(scalar, i * 8);\r\n if (v > CONST_ORDER[i]) {\r\n return false;\r\n }\r\n else if (v < CONST_ORDER[i]) {\r\n break;\r\n }\r\n else if (i === 0) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\n/**\r\n * This is a port of the Go code from https://github.com/hdevalence/ed25519consensus.\r\n * Which is an extension of https://github.com/golang/crypto/tree/master/ed25519.\r\n * Which in a port of the “ref10” implementation of ed25519 from SUPERCOP.\r\n */\r\nimport { Sha512 } from \"../hashes/sha512.mjs\";\r\nimport { ArrayHelper } from \"../utils/arrayHelper.mjs\";\r\nimport { ExtendedGroupElement } from \"./edwards25519/extendedGroupElement.mjs\";\r\nimport { ProjectiveGroupElement } from \"./edwards25519/projectiveGroupElement.mjs\";\r\nimport { scalarMinimal, scalarMulAdd, scalarReduce } from \"./edwards25519/scalar.mjs\";\r\n/**\r\n * Implementation of Ed25519.\r\n */\r\nexport class Ed25519 {\r\n /**\r\n * Public returns the PublicKey corresponding to priv.\r\n * @param privateKey The private key to get the corresponding public key.\r\n * @returns The public key.\r\n */\r\n static publicKeyFromPrivateKey(privateKey) {\r\n return privateKey.subarray(32).slice();\r\n }\r\n /**\r\n * Generate the key pair from the seed.\r\n * @param seed The seed to generate the key pair for.\r\n * @returns The key pair.\r\n */\r\n static keyPairFromSeed(seed) {\r\n const privateKey = Ed25519.privateKeyFromSeed(seed.slice(0, Ed25519.SEED_SIZE));\r\n return {\r\n privateKey,\r\n publicKey: Ed25519.publicKeyFromPrivateKey(privateKey)\r\n };\r\n }\r\n /**\r\n * Calculates a private key from a seed.\r\n * @param seed The seed to generate the private key from.\r\n * @returns The private key.\r\n */\r\n static privateKeyFromSeed(seed) {\r\n if (!seed || seed.length !== Ed25519.SEED_SIZE) {\r\n throw new Error(`The seed length is incorrect, it should be ${Ed25519.SEED_SIZE} but is ${seed ? seed.length : 0}`);\r\n }\r\n const sha512 = new Sha512();\r\n sha512.update(seed);\r\n const digest = sha512.digest();\r\n digest[0] &= 248;\r\n digest[31] &= 127;\r\n digest[31] |= 64;\r\n const A = new ExtendedGroupElement();\r\n A.scalarMultBase(digest);\r\n const publicKeyBytes = new Uint8Array(32);\r\n A.toBytes(publicKeyBytes);\r\n const privateKey = new Uint8Array(Ed25519.PRIVATE_KEY_SIZE);\r\n privateKey.set(seed);\r\n privateKey.set(publicKeyBytes, 32);\r\n return privateKey;\r\n }\r\n /**\r\n * Sign the message with privateKey and returns a signature.\r\n * @param privateKey The private key.\r\n * @param message The message to sign.\r\n * @returns The signature.\r\n */\r\n static sign(privateKey, message) {\r\n if (!privateKey || privateKey.length !== Ed25519.PRIVATE_KEY_SIZE) {\r\n throw new Error(\"Bad private key length\");\r\n }\r\n let sha512 = new Sha512();\r\n sha512.update(privateKey.subarray(0, 32));\r\n const digest1 = sha512.digest();\r\n const expandedSecretKey = digest1.slice();\r\n expandedSecretKey[0] &= 248;\r\n expandedSecretKey[31] &= 63;\r\n expandedSecretKey[31] |= 64;\r\n sha512 = new Sha512();\r\n sha512.update(digest1.subarray(32));\r\n sha512.update(message);\r\n const messageDigest = sha512.digest();\r\n const messageDigestReduced = new Uint8Array(32);\r\n scalarReduce(messageDigestReduced, messageDigest);\r\n const R = new ExtendedGroupElement();\r\n R.scalarMultBase(messageDigestReduced);\r\n const encodedR = new Uint8Array(32);\r\n R.toBytes(encodedR);\r\n sha512 = new Sha512();\r\n sha512.update(encodedR);\r\n sha512.update(privateKey.subarray(32));\r\n sha512.update(message);\r\n const hramDigest = sha512.digest();\r\n const hramDigestReduced = new Uint8Array(32);\r\n scalarReduce(hramDigestReduced, hramDigest);\r\n const s = new Uint8Array(32);\r\n scalarMulAdd(s, hramDigestReduced, expandedSecretKey, messageDigestReduced);\r\n const signature = new Uint8Array(Ed25519.SIGNATURE_SIZE);\r\n signature.set(encodedR);\r\n signature.set(s, 32);\r\n return signature;\r\n }\r\n /**\r\n * Verify reports whether sig is a valid signature of message by publicKey.\r\n * @param publicKey The public key to verify the signature.\r\n * @param message The message for the signature.\r\n * @param sig The signature.\r\n * @returns True if the signature matches.\r\n */\r\n static verify(publicKey, message, sig) {\r\n if (!publicKey || publicKey.length !== Ed25519.PUBLIC_KEY_SIZE) {\r\n return false;\r\n }\r\n if (!sig || sig.length !== Ed25519.SIGNATURE_SIZE || (sig[63] & 224) !== 0) {\r\n return false;\r\n }\r\n const A = new ExtendedGroupElement();\r\n if (!A.fromBytes(publicKey)) {\r\n return false;\r\n }\r\n A.X.neg();\r\n A.T.neg();\r\n const h = new Sha512();\r\n h.update(sig.subarray(0, 32));\r\n h.update(publicKey);\r\n h.update(message);\r\n const digest = h.digest();\r\n const hReduced = new Uint8Array(32);\r\n scalarReduce(hReduced, digest);\r\n const R = new ProjectiveGroupElement();\r\n const s = sig.subarray(32).slice();\r\n // https://tools.ietf.org/html/rfc8032#section-5.1.7 requires that s be in\r\n // the range [0, order) in order to prevent signature malleability.\r\n if (!scalarMinimal(s)) {\r\n return false;\r\n }\r\n R.doubleScalarMultVartime(hReduced, A, s);\r\n const checkR = new Uint8Array(32);\r\n R.toBytes(checkR);\r\n return ArrayHelper.equal(sig.subarray(0, 32), checkR);\r\n }\r\n}\r\n/**\r\n * PublicKeySize is the size, in bytes, of public keys as used in this package.\r\n */\r\nEd25519.PUBLIC_KEY_SIZE = 32;\r\n/**\r\n * PrivateKeySize is the size, in bytes, of private keys as used in this package.\r\n */\r\nEd25519.PRIVATE_KEY_SIZE = 64;\r\n/**\r\n * SignatureSize is the size, in bytes, of signatures generated and verified by this package.\r\n */\r\nEd25519.SIGNATURE_SIZE = 64;\r\n/**\r\n * SeedSize is the size, in bytes, of private key seeds. These are the private key representations used by RFC 8032.\r\n */\r\nEd25519.SEED_SIZE = 32;\r\n","// Copyright 2020 IOTA Stiftung\r\n// SPDX-License-Identifier: Apache-2.0\r\n/* eslint-disable no-bitwise */\r\nimport { Converter } from \"@iota/util.js\";\r\nimport { HmacSha512 } from \"../macs/hmacSha512.mjs\";\r\nimport { Ed25519 } from \"../signatures/ed25519.mjs\";\r\n/**\r\n * Class to help with slip0010 key derivation\r\n * https://github.com/satoshilabs/slips/blob/master/slip-0010.md.\r\n */\r\nexport class Slip0010 {\r\n /**\r\n * Get the master key from the seed.\r\n * @param seed The seed to generate the master key from.\r\n * @returns The key and chain code.\r\n */\r\n static getMasterKeyFromSeed(seed) {\r\n const hmac = new HmacSha512(Converter.utf8ToBytes(\"ed25519 seed\"));\r\n const fullKey = hmac.update(seed).digest();\r\n return {\r\n privateKey: Uint8Array.from(fullKey.slice(0, 32)),\r\n chainCode: Uint8Array.from(fullKey.slice(32))\r\n };\r\n }\r\n /**\r\n * Derive a key from the path.\r\n * @param seed The seed.\r\n * @param path The path.\r\n * @returns The key and chain code.\r\n */\r\n static derivePath(seed, path) {\r\n let { privateKey, chainCode } = Slip0010.getMasterKeyFromSeed(seed);\r\n const segments = path.numberSegments();\r\n for (let i = 0; i < segments.length; i++) {\r\n const indexValue = 0x80000000 + segments[i];\r\n const data = new Uint8Array(1 + privateKey.length + 4);\r\n data[0] = 0;\r\n data.set(privateKey, 1);\r\n data[privateKey.length + 1] = indexValue >>> 24;\r\n data[privateKey.length + 2] = indexValue >>> 16;\r\n data[privateKey.length + 3] = indexValue >>> 8;\r\n data[privateKey.length + 4] = indexValue & 0xff;\r\n // eslint-disable-next-line newline-per-chained-call\r\n const fullKey = new HmacSha512(chainCode).update(data).digest();\r\n privateKey = Uint8Array.from(fullKey.slice(0, 32));\r\n chainCode = Uint8Array.from(fullKey.slice(32));\r\n }\r\n return {\r\n privateKey,\r\n chainCode\r\n };\r\n }\r\n /**\r\n * Get the public key from the private key.\r\n * @param privateKey The private key.\r\n * @param withZeroByte Include a zero bute prefix.\r\n * @returns The public key.\r\n */\r\n static getPublicKey(privateKey, withZeroByte = true) {\r\n const keyPair = Ed25519.keyPairFromSeed(privateKey);\r\n const signPk = keyPair.privateKey.slice(32);\r\n if (withZeroByte) {\r\n const arr = new Uint8Array(1 + signPk.length);\r\n arr[0] = 0;\r\n arr.set(signPk, 1);\r\n return arr;\r\n }\r\n return signPk;\r\n }\r\n}\r\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgEyeClosed = function SvgEyeClosed(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23.7055,11.46295q-1.43475,-3.0227 -3.41479,-4.93035l-1.38442,1.38442c1.12892,1.07886 2.11227,2.49021 2.96257,4.24794c-2.26383,4.68547 -5.47726,6.9112 -9.86887,6.9112q-1.97731,0 -3.64253,-0.60895l-1.50006,1.50006q2.3128,1.06797 5.14259,1.06797q7.84449,0 11.70551,-8.171a1.64046,1.64046 0 0 0 0,-1.40129zm-1.72971,-8.72444l-1.15994,-1.1613a0.21768,0.21768 0 0 0 -0.30801,0l-2.9759,2.97454q-2.4611,-1.25708 -5.53196,-1.25708q-7.84449,0 -11.70551,8.171a1.64073,1.64073 0 0 0 0,1.40129q1.5425,3.24881 3.71409,5.20816l-2.8793,2.87849a0.21768,0.21768 0 0 0 0,0.30774l1.16157,1.16157a0.21768,0.21768 0 0 0 0.30774,0l19.37722,-19.3764a0.21768,0.21768 0 0 0 0,-0.30801zm-19.84468,9.42645c2.26655,-4.68547 5.47999,-6.9112 9.86887,-6.9112c1.484,0 2.83332,0.25468 4.05747,0.77248l-1.91282,1.91282a4.78886,4.78886 0 0 0 -6.47939,6.47939l-2.26981,2.26981c-1.25626,-1.10879 -2.3392,-2.61102 -3.26432,-4.5233zm6.71257,0a3.05045,3.05045 0 0 1 3.97802,-2.90298l-3.83354,3.83354a3.04746,3.04746 0 0 1 -0.14448,-0.93056z\",\n fill: \"currentColor\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11.89115,15.21242c-0.09414,0 -0.18693,-0.00435 -0.2789,-0.01279l-1.4372,1.4372a4.79131,4.79131 0 0 0 6.18798,-6.18798l-1.4372,1.4372c0.00843,0.09197 0.01279,0.18475 0.01279,0.2789a3.04583,3.04583 0 0 1 -3.04746,3.04746z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgEyeClosed);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/eye-closed.6e736a4ac2ce0ee321ba3b737b3cc912.svg\";","import { ArrayHelper } from \"@iota/crypto.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport AsyncComponent from \"./AsyncComponent\";\nimport \"./Graph.scss\";\nimport { GraphProps } from \"./GraphProps\";\nimport { GraphState } from \"./GraphState\";\n\n/**\n * Graph.\n */\nclass Graph extends AsyncComponent {\n /**\n * The graph element.\n */\n private _graphElement: SVGSVGElement | null;\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Create a new instance of Graph.\n * @param props The props.\n */\n constructor(props: GraphProps) {\n super(props);\n\n this._graphElement = null;\n this._resize = () => this.resize();\n\n this.state = {};\n }\n\n /**\n * The component did mount.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n window.addEventListener(\"resize\", this._resize);\n }\n\n /**\n * The component updated.\n * @param prevProps The previous properties.\n */\n public componentDidUpdate(prevProps: GraphProps): void {\n let dataEqual = this.props.series.length === prevProps.series.length;\n if (dataEqual) {\n for (let i = 0; i < this.props.series.length; i++) {\n dataEqual = ArrayHelper.equal(this.props.series[i].values, prevProps.series[i].values);\n if (!dataEqual) {\n break;\n }\n }\n }\n if (!dataEqual) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n this._graphElement = null;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
{this.props.caption}
\n
\n {this.props.series.length > 1 && this.props.series.map((s, idx) => (\n \n
\n \n {s.label}\n \n \n ))}\n
\n
\n \n this.setElement(r)}\n >\n {this.state.paths?.map((b, idx) => (\n \n ))}\n {this.state.text?.map((t, idx) => (\n \n {t.content}\n \n ))}\n \n \n
\n );\n }\n\n /**\n * Set the graph element.\n * @param element The element.\n */\n private setElement(element: SVGSVGElement | null): void {\n setTimeout(() => {\n if (!this._graphElement && element) {\n this._graphElement = element;\n this.setState(this.calculateGraph());\n }\n }, 100);\n }\n\n /**\n * The window was resized.\n */\n private resize(): void {\n if (this._graphElement) {\n this.setState(this.calculateGraph());\n }\n }\n\n /**\n * Calculate the graph points.\n * @returns The graph points.\n */\n private calculateGraph(): {\n paths: {\n path: string;\n className: string;\n }[];\n text: {\n x: number;\n y: number;\n content: string;\n }[];\n } {\n const paths = [];\n const text = [];\n const axis = [];\n\n if (this._graphElement && this.props.series.length > 0) {\n const axisLabelHeight = 20;\n\n try {\n const graphWidth = this._graphElement.width.baseVal.value;\n const graphHeight = this._graphElement.height.baseVal.value - axisLabelHeight;\n\n let seriesMaxLength = this.props.seriesMaxLength;\n if (graphWidth < 500) {\n seriesMaxLength /= 2;\n }\n\n const actualSeriesValues: number[][] =\n this.props.series.map(s => s.values.slice(-seriesMaxLength));\n\n let maxY = 0;\n const maxItems = Math.min(seriesMaxLength, actualSeriesValues[0].length);\n\n for (let i = 0; i < actualSeriesValues.length; i++) {\n for (let j = 0; j < actualSeriesValues[i].length; j++) {\n if (actualSeriesValues[i][j] > maxY) {\n maxY = actualSeriesValues[i][j];\n }\n }\n }\n\n if (maxY === 0) {\n maxY = 4;\n }\n\n const yUsage = 0.9;\n const axisLabelWidth = 30;\n const marginLeft = 10;\n const marginRight = 10;\n const axisLineCount = 4;\n const decimalPlaces = maxY <= 2 ? 2 : 0;\n\n const yScale = (graphHeight * yUsage) / maxY;\n const barWidth = (graphWidth - axisLabelWidth - marginLeft - marginRight) /\n (seriesMaxLength * this.props.series.length);\n const axisSpacing = graphHeight / (axisLineCount - 1);\n\n for (let i = 0; i < axisLineCount; i++) {\n axis.push({\n path: `M ${axisLabelWidth} ${graphHeight - (i * axisSpacing)\n } L ${graphWidth} ${graphHeight - (i * axisSpacing)}`,\n className: \"axis-color\"\n });\n text.push({\n x: axisLabelWidth - 5,\n y: graphHeight - (i * axisSpacing) + 2,\n anchor: \"end\",\n content: (i * ((maxY / yUsage) / (axisLineCount - 1))).toFixed(decimalPlaces)\n });\n }\n\n if (this.props.timeInterval && this.props.endTime) {\n let numTimeEntries = this.props.timeMarkers ?? Math.floor(graphWidth / 100);\n if (graphWidth < 300) {\n numTimeEntries = 3;\n }\n const startTime = this.props.endTime - (maxItems * this.props.timeInterval);\n const timePerInterval = (seriesMaxLength * this.props.timeInterval) / numTimeEntries;\n for (let i = 0; i <= numTimeEntries; i++) {\n const dt = new Date(startTime + (i * timePerInterval));\n text.push({\n x: marginLeft + (axisLabelWidth / 2) +\n (((graphWidth - marginLeft - marginRight) / numTimeEntries) * i),\n y: graphHeight + axisLabelHeight,\n anchor: \"middle\",\n content: `${dt.getHours().toString()\n .padStart(2, \"0\")}:${dt.getMinutes().toString()\n .padStart(2, \"0\")}.${dt.getSeconds().toString()\n .padStart(2, \"0\")}`\n });\n }\n }\n\n for (let i = 0; i < maxItems; i++) {\n for (let j = 0; j < actualSeriesValues.length; j++) {\n const val = actualSeriesValues[j][i];\n paths.push({\n path: this.calculatePath(\n graphHeight,\n barWidth,\n axisLabelWidth + marginLeft,\n j + (i * actualSeriesValues.length),\n val * yScale),\n className: this.props.series[j].className\n });\n }\n }\n } catch {}\n }\n\n return {\n text,\n paths: [...axis, ...paths.reverse()]\n };\n }\n\n /**\n * Calculate the path for the bar.\n * @param graphHeight The height of the graph.\n * @param barWidth The width of bars.\n * @param marginLeft The left margin for axis.\n * @param index The bar index.\n * @param scaledVal The end value.\n * @returns The path.\n */\n private calculatePath(\n graphHeight: number, barWidth: number, marginLeft: number,\n index: number, scaledVal: number): string {\n const spacing = 2;\n let pathSegments = [`M ${marginLeft + (index * barWidth) + spacing} ${graphHeight}`];\n\n pathSegments = [\n ...pathSegments,\n ...(scaledVal <= 0 ? [\n `L ${marginLeft + ((index * barWidth) + spacing)} ${graphHeight - 1}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - 1}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight}`\n ] : [\n `L ${marginLeft + (index * barWidth) + spacing} ${graphHeight - scaledVal}`,\n `C ${marginLeft + (index * barWidth) + spacing} ${graphHeight - scaledVal - 10\n } ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - scaledVal - 10\n } ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight - scaledVal}`,\n `L ${marginLeft + ((index + 1) * barWidth) - spacing} ${graphHeight}`\n ])\n ];\n\n return pathSegments.join(\" \");\n }\n}\n\nexport default Graph;\n","/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\nimport React, { useRef } from \"react\";\nimport \"./Tooltip.scss\";\n\ninterface TooltipProps {\n tooltipContent: string | React.ReactNode;\n children: React.ReactNode;\n}\n\n/**\n * Component to display a tooltip on hover.\n */\nconst Tooltip: React.FC = ({ children, tooltipContent }) => {\n const tooltip = useRef(null);\n\n const onEnter = () => {\n if (tooltip?.current) {\n tooltip.current.style.visibility = \"visible\";\n tooltip.current.style.opacity = \"1\";\n }\n };\n\n const onLeave = () => {\n if (tooltip?.current) {\n tooltip.current.style.visibility = \"hidden\";\n tooltip.current.style.opacity = \"0\";\n }\n };\n\n return (\n
\n
\n
\n {tooltipContent}\n
\n
\n {children}\n
\n
\n );\n};\n\nexport default Tooltip;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./InfoPanel.scss\";\nimport { InfoPanelProps } from \"./InfoPanelProps\";\nimport Tooltip from \"./Tooltip\";\n\nconst SYNC_STATUS_CAPTION = \"Finalized Slot / Committed Slot\";\n\n/**\n * Info panel.\n */\nclass InfoPanel extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n let latestFinalizedSlot = \"\";\n let latestCommitmentSlot = \"\";\n if (this.props.caption === SYNC_STATUS_CAPTION && this.props.value) {\n const slots = this.props.value.split(\"/\");\n latestFinalizedSlot = slots[0];\n latestCommitmentSlot = slots[1];\n }\n return (\n
\n
\n
\n {this.props.icon}\n
\n
\n

{this.props.caption}

\n {\n this.props.caption === SYNC_STATUS_CAPTION ?\n \n {\n this.props.value ?\n
\n {latestFinalizedSlot} / {latestCommitmentSlot}\n
:\n \"-\"\n }\n :\n
{this.props.value ?? \"-\"}
\n }\n
\n
\n );\n }\n}\n\nexport default InfoPanel;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgEye = function SvgEye(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23.69284,11.29876c-2.57667,-5.42785 -6.47156,-8.15945 -11.69285,-8.15945c-5.224,0 -9.11619,2.73159 -11.69285,8.16217a1.63896,1.63896 0 0 0 0,1.39977c2.57667,5.42785 6.47156,8.15945 11.69285,8.15945c5.224,0 9.11619,-2.73159 11.69285,-8.16217c0.20929,-0.44032 0.20929,-0.9513 0,-1.39977zm-11.69285,7.60498c-4.38414,0 -7.5941,-2.22332 -9.8582,-6.90373c2.2641,-4.68041 5.47406,-6.90373 9.8582,-6.90373c4.38414,0 7.5941,2.22332 9.8582,6.90373c-2.26138,4.68041 -5.47134,6.90373 -9.8582,6.90373zm-0.10872,-11.68742c-2.6419,0 -4.78369,2.14179 -4.78369,4.78369s2.14179,4.78369 4.78369,4.78369s4.78369,-2.14179 4.78369,-4.78369s-2.14179,-4.78369 -4.78369,-4.78369zm0,7.82785c-1.68245,0 -3.04417,-1.36172 -3.04417,-3.04417s1.36172,-3.04417 3.04417,-3.04417s3.04417,1.36172 3.04417,3.04417s-1.36172,3.04417 -3.04417,3.04417z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgEye);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/eye.8f64de3bdaad08c216b1df66468d4990.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronLeft = function SvgChevronLeft(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.51794 6.98708L7.68154 12.1921C7.78117 12.2891 7.86064 12.4052 7.91531 12.5334C7.96998 12.6617 7.99876 12.7997 7.99996 12.9393C8.00116 13.079 7.97477 13.2174 7.92232 13.3467C7.86987 13.4759 7.79241 13.5933 7.69447 13.692C7.59652 13.7907 7.48005 13.8688 7.35185 13.9217C7.22365 13.9746 7.08629 14.0012 6.94778 14C6.80928 13.9987 6.67239 13.9697 6.54513 13.9146C6.41786 13.8595 6.30275 13.7794 6.20652 13.679L0.30542 7.73051C0.10986 7.53332 0 7.26591 0 6.98708C0 6.70825 0.10986 6.44084 0.30542 6.24365L6.20652 0.295175C6.40326 0.103632 6.66677 -0.00235606 6.94028 3.97504e-05C7.21379 0.00243556 7.47542 0.113023 7.66883 0.307985C7.86224 0.502946 7.97195 0.766681 7.97432 1.04239C7.9767 1.31809 7.87156 1.58371 7.68154 1.78203L2.51794 6.98708Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronLeft);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-left.ab1f7871604e78b85cd9b06fc83d5121.svg\";","import { HexEncodedString } from \"../models/hexEncodedTypes\";\n\n/**\n * Class to help with processing of data.\n */\nexport class DataHelper {\n /**\n * Computes a slotIndex from a block, transaction or slotCommitment Id.\n * @param id The block, transaction or slotCommitment Id.\n * @returns The slotIndex.\n */\n public static computeSlotIndex(\n id: HexEncodedString\n ): number {\n const numberString = id.slice(-8);\n const chunks = [];\n\n for (\n let charsLength = numberString.length, i = 0;\n i < charsLength;\n i += 2\n ) {\n chunks.push(numberString.slice(i, i + 2));\n }\n const separated = chunks.map(n => Number.parseInt(n, 16));\n const buf = Uint8Array.from(separated).buffer;\n const view = new DataView(buf);\n\n return view.getUint32(0, true);\n }\n\n /**\n * Sort a list of peers.\n * @param peers The peers to sort.\n * @returns The sorted peers.\n */\n public static sortPeers(peers: T[]): T[] {\n return peers.sort((a, b) => {\n if (a.connected !== b.connected) {\n return a.connected ? -1 : 1;\n }\n\n return (a.alias ?? a.id).localeCompare(b.alias ?? b.id);\n });\n }\n}\n","import React, { Component, ReactNode } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { ReactComponent as EyeClosedIcon } from \"../../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../../assets/eye.svg\";\nimport { ReactComponent as HealthBadIcon } from \"../../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../../assets/health-good.svg\";\nimport { ServiceFactory } from \"../../../factories/serviceFactory\";\nimport { IPeer } from \"../../../models/peers/IPeer\";\nimport { IPeersResponse } from \"../../../models/peers/IPeersResponse\";\nimport { WebSocketTopic } from \"../../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../../services/metricsService\";\nimport { SettingsService } from \"../../../services/settingsService\";\nimport { DataHelper } from \"../../../utils/dataHelper\";\nimport \"./PeersSummaryPanel.scss\";\nimport { PeersSummaryState } from \"./PeersSummaryState\";\n\n/**\n * Display a list of the peers.\n */\nclass PeersSummaryPanel extends Component {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer metrics subscription id.\n */\n private _peerMetricsSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of PeersSummaryPanel.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n this._peerMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetrics,\n data => {\n this.handleData(data.peers);\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n if (this._peerMetricsSubscription) {\n this._metricsService.unsubscribe(this._peerMetricsSubscription);\n this._peerMetricsSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n

Peers

\n this.toggleBlindMode()}\n className=\"peers-summary--icon-button\"\n >\n {this.state.blindMode ? : }\n \n
\n {!this.state.peers && (\n

There are no peers.

\n )}\n {this.state.peers?.map((p, idx) => (\n \n
\n {p.connected ? : }\n
\n
\n
\n {this.state.blindMode && (\"*\".repeat((p.alias ?? \"\").length))}\n {!this.state.blindMode && (p.alias ?? \"\")}\n
\n {p.address && (\n
\n {this.state.blindMode ? \"*\".repeat(p.address.length) : p.address}\n
\n )}\n
\n \n ))}\n
\n );\n }\n\n /**\n * Handle the peer data.\n * @param data The data to handle.\n */\n private handleData(data: IPeer[]): void {\n let sortedPeers;\n\n if (data) {\n sortedPeers = DataHelper.sortPeers(data.map(p => ({\n id: p.id,\n alias: p.alias,\n connected: p.connected,\n address: `${p.multiAddresses[0]}/p2p/${p.id}`\n })));\n }\n\n this.setState({\n peers: sortedPeers\n });\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default PeersSummaryPanel;\n","import React, { ReactNode } from \"react\";\nimport { ReactComponent as BannerCurve } from \"../../assets/banner-curve.svg\";\nimport { ReactComponent as ConfirmationIcon } from \"../../assets/confirmation.svg\";\nimport { ReactComponent as DbIcon } from \"../../assets/db-icon.svg\";\nimport { ReactComponent as MemoryIcon } from \"../../assets/memory.svg\";\nimport { ReactComponent as MilestoneIcon } from \"../../assets/milestone.svg\";\nimport { ReactComponent as PruningIcon } from \"../../assets/pruning.svg\";\nimport { ReactComponent as UptimeIcon } from \"../../assets/uptime.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { INetworkMetrics } from \"../../models/info/INetworkMetrics\";\nimport { IDatabaseSizesMetrics } from \"../../models/websocket/IDatabaseSizesMetrics\";\nimport { IGossipMetrics } from \"../../models/websocket/IGossipMetrics\";\nimport { INodeInfoExtended } from \"../../models/websocket/INodeInfoExtended\";\nimport { IPublicNodeStatus } from \"../../models/websocket/IPublicNodeStatus\";\nimport { ISyncStatus } from \"../../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { EventAggregator } from \"../../services/eventAggregator\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { NodeConfigService } from \"../../services/nodeConfigService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { ThemeService } from \"../../services/themeService\";\nimport { BrandHelper } from \"../../utils/brandHelper\";\nimport { FormatHelper } from \"../../utils/formatHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Graph from \"../components/layout/Graph\";\nimport InfoPanel from \"../components/layout/InfoPanel\";\nimport PeersSummaryPanel from \"../components/tangle/PeersSummaryPanel\";\nimport \"./Home.scss\";\nimport { HomeState } from \"./HomeState\";\n\n/**\n * Home panel.\n */\nclass Home extends AsyncComponent {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The node info extended subscription id.\n */\n private _nodeInfoExtendedSubscription?: string;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * The network metrics subscription id.\n */\n private _networkMetricsSubscription?: string;\n\n /**\n * The gossip metrics subscription id.\n */\n private _gossipMetricsSubscription?: string;\n\n /**\n * The database size metrics subscription id.\n */\n private _databaseSizeSubscription?: string;\n\n /**\n * The network id.\n */\n private readonly _networkId?: string;\n\n /**\n * Create a new instance of Home.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._themeService = ServiceFactory.get(\"theme\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n const nodeConfigService = ServiceFactory.get(\"node-config\");\n this._networkId = nodeConfigService.getNetworkId();\n\n this.state = {\n nodeName: \"\",\n nodeId: \"\",\n displayVersion: \"\",\n displayLatestVersion: \"\",\n latestCommitmentSlot: \"-\",\n latestFinalizedSlot: \"-\",\n pruningEpoch: \"-\",\n bps: \"-\",\n rbps: \"-\",\n referencedRate: \"-\",\n memory: \"-\",\n dbSizePermanentFormatted: \"-\",\n dbSizePrunableFormatted: \"-\",\n dbSizeTxRetainerFormatted: \"-\",\n dbSizeTotalFormatted: \"-\",\n uptime: \"-\",\n lastReceivedBpsTime: 0,\n bpsIncoming: [],\n bpsOutgoing: [],\n bannerSrc: \"\",\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n this.setState({\n bannerSrc: await BrandHelper.getBanner(this._themeService.get())\n });\n\n EventAggregator.subscribe(\"theme\", \"home\", async (theme: string) => {\n this.setState({\n bannerSrc: await BrandHelper.getBanner(theme)\n });\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n const pruningEpoch = data.pruningEpoch.toString();\n\n if (pruningEpoch !== this.state.pruningEpoch) {\n this.setState({ pruningEpoch });\n }\n }\n });\n\n this._nodeInfoExtendedSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeInfoExtended,\n data => {\n if (data) {\n const nodeName = data.nodeAlias ?? BrandHelper.getConfiguration().name;\n const nodeId = data.nodeId || \"No node Id.\";\n const uptime = FormatHelper.duration(data.uptime);\n const memory = FormatHelper.iSize(data.memoryUsage);\n\n if (nodeName !== this.state.nodeName) {\n this.setState({ nodeName });\n }\n\n if (nodeId !== this.state.nodeId) {\n this.setState({ nodeId });\n }\n\n if (uptime !== this.state.uptime) {\n this.setState({ uptime });\n }\n\n if (memory !== this.state.memory) {\n this.setState({ memory });\n }\n\n this.checkVersion(data.version, data.latestVersion);\n }\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const latestFinalizedSlot = data.latestFinalizedSlot ? data.latestFinalizedSlot.toString() : \"\";\n const latestCommitmentSlot = data.latestCommitmentSlot ? data.latestCommitmentSlot.toString() : \"\";\n\n if (latestFinalizedSlot !== this.state.latestFinalizedSlot) {\n this.setState({ latestFinalizedSlot });\n }\n\n if (latestCommitmentSlot !== this.state.latestCommitmentSlot) {\n this.setState({ latestCommitmentSlot });\n }\n }\n });\n\n this._networkMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.NetworkMetrics,\n data => {\n if (data) {\n let bps = \"-\";\n let rbps = \"-\";\n let referencedRate = \"-\";\n\n if (data.blocksPerSecond) {\n bps = Number.parseFloat(data.blocksPerSecond).toFixed(1)\n.toString();\n }\n if (data.confirmedBlocksPerSecond) {\n rbps = Number.parseFloat(data.confirmedBlocksPerSecond).toFixed(1)\n.toString();\n }\n if (data.confirmationRate) {\n referencedRate = `${Number.parseFloat(data.confirmationRate).toFixed(1)\n.toString()}%`;\n }\n\n this.setState({\n bps,\n rbps,\n referencedRate\n });\n }\n }\n );\n\n this._gossipMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.GossipMetrics,\n undefined,\n allData => {\n const nonNull = allData.filter(d => d !== undefined && d !== null);\n\n const bpsIncoming = nonNull.map(m => m.incoming);\n const bpsOutgoing = nonNull.map(m => m.outgoing);\n\n this.setState({ bpsIncoming, bpsOutgoing, lastReceivedBpsTime: Date.now() });\n }\n );\n\n this._databaseSizeSubscription = this._metricsService.subscribe(\n WebSocketTopic.DatabaseSizeMetric,\n data => {\n if (data) {\n if (data.databaseSizes.length === 0) {\n return;\n }\n\n const dbSizeMetric = data.databaseSizes[0];\n\n const dbSizePermanentFormatted = FormatHelper.size(dbSizeMetric.permanent);\n if (dbSizePermanentFormatted !== this.state.dbSizePermanentFormatted) {\n this.setState({ dbSizePermanentFormatted });\n }\n\n const dbSizePrunableFormatted = FormatHelper.size(dbSizeMetric.prunable);\n if (dbSizePrunableFormatted !== this.state.dbSizePrunableFormatted) {\n this.setState({ dbSizePrunableFormatted });\n }\n\n const dbSizeTxRetainerFormatted = FormatHelper.size(dbSizeMetric.txRetainer);\n if (dbSizeTxRetainerFormatted !== this.state.dbSizeTxRetainerFormatted) {\n this.setState({ dbSizeTxRetainerFormatted });\n }\n\n const dbSizeTotalFormatted = FormatHelper.size(dbSizeMetric.total);\n if (dbSizeTotalFormatted !== this.state.dbSizeTotalFormatted) {\n this.setState({ dbSizeTotalFormatted });\n }\n }\n });\n\n EventAggregator.subscribe(\"settings.blindMode\", \"home\", blindMode => {\n this.setState({ blindMode });\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"theme\", \"home\");\n\n if (this._nodeInfoExtendedSubscription) {\n this._metricsService.unsubscribe(this._nodeInfoExtendedSubscription);\n this._nodeInfoExtendedSubscription = undefined;\n }\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n\n if (this._networkMetricsSubscription) {\n this._metricsService.unsubscribe(this._networkMetricsSubscription);\n this._networkMetricsSubscription = undefined;\n }\n\n if (this._gossipMetricsSubscription) {\n this._metricsService.unsubscribe(this._gossipMetricsSubscription);\n this._gossipMetricsSubscription = undefined;\n }\n\n if (this._databaseSizeSubscription) {\n this._metricsService.unsubscribe(this._databaseSizeSubscription);\n this._databaseSizeSubscription = undefined;\n }\n\n EventAggregator.unsubscribe(\"settings.blindMode\", \"home\");\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n
\n
\n
\n

{this.state.blindMode ? \"**********\" : this.state.nodeName}

\n {this.state.nodeId && (\n

\n {this.state.blindMode ? \"*********\" : this.state.nodeId}\n

\n )}\n
\n

\n {this._networkId}\n

\n

\n {this.state.displayVersion}{this.state.displayLatestVersion}\n

\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"orange\"\n />\n
\n
\n }\n backgroundStyle=\"blue\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"green\"\n />\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"green\"\n />\n
\n
\n
\n \n
\n
\n
\n }\n backgroundStyle=\"green\"\n />\n }\n backgroundStyle=\"blue\"\n />\n }\n backgroundStyle=\"purple\"\n />\n
\n
\n
\n \n
\n
\n
\n
\n );\n }\n\n /**\n * Check to see if a new version is available.\n * @param currentVersion The current version.\n * @param latestVersion The latest resion.\n */\n private checkVersion(currentVersion: string, latestVersion: string): void {\n if (this.state.version !== currentVersion ||\n this.state.latestVersion !== latestVersion) {\n const comparison = this.compareVersions(currentVersion, latestVersion);\n\n this.setState({\n version: currentVersion,\n latestVersion,\n displayVersion: currentVersion\n });\n\n if (comparison < 0) {\n this.setState({ displayLatestVersion: ` - a new version ${latestVersion} is available.` });\n }\n }\n }\n\n /**\n * Compare two versions.\n * @param first The first version.\n * @param second The second versions.\n * @returns 0 if the same, 1 if a > b or -1 if a < b.\n */\n private compareVersions(first: string, second: string): number {\n const partsFirst = first.split(\".\");\n const partsSecond = second.split(\".\");\n\n if (partsFirst.length === 3 && partsSecond.length === 3) {\n for (let i = 0; i < 3; i++) {\n const na = Number.parseInt(partsFirst[i], 10);\n const nb = Number.parseInt(partsSecond[i], 10);\n if (na > nb) {\n return 1;\n }\n if (nb > na) {\n return -1;\n }\n\n if (i === 2) {\n let firstAlphabet = 96;\n let secondAlphabet = 96;\n const firstIndex = partsFirst[i].indexOf(\"-\");\n if (firstIndex > 0) {\n firstAlphabet = partsFirst[i].codePointAt(firstIndex + 1) ?? Number.NaN;\n }\n const secondIndex = partsSecond[i].indexOf(\"-\");\n if (secondIndex > 0) {\n secondAlphabet = partsSecond[i].codePointAt(secondIndex + 1) ?? Number.NaN;\n }\n\n return firstAlphabet - secondAlphabet;\n }\n }\n }\n\n return 0;\n }\n}\n\nexport default Home;\n","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport \"./Spinner.scss\";\nimport { SpinnerProps } from \"./SpinnerProps\";\n\n/**\n * Component which will display a spinner.\n */\nclass Spinner extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n );\n }\n}\n\nexport default Spinner;\n","import React, { ReactNode } from \"react\";\nimport { Redirect } from \"react-router-dom\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { AuthService } from \"../../services/authService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Login.scss\";\nimport { LoginState } from \"./LoginState\";\n\n/**\n * Login panel.\n */\nclass Login extends AsyncComponent {\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of Login.\n * @param props The props.\n */\n constructor(props: unknown) {\n super(props);\n\n this._authService = ServiceFactory.get(\"auth\");\n\n this.state = {\n user: \"\",\n password: \"\",\n isBusy: false,\n error: false,\n redirect: this._authService.isLoggedIn() ? \"/\" : \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n if (this.state.redirect.length > 0) {\n return ;\n }\n return (\n
\n
\n

Login

\n
\n
\n

Please enter your credentials to unlock the full dashboard.

\n
\n User\n
\n
\n this.setState({ user: e.target.value })}\n autoFocus={true}\n />\n
\n
\n Password\n
\n
\n this.setState({ password: e.target.value })}\n onKeyDown={e => {\n if (e.key === \"Enter\" &&\n this.state.password.trim().length > 0 &&\n this.state.user.trim().length > 0) {\n this.login();\n }\n }}\n />\n
\n
\n
\n this.login()}\n >\n Login\n \n {this.state.isBusy && (\n \n )}\n {this.state.error && (\n

Your login attempt failed, please try again.

\n )}\n
\n
\n
\n
\n
\n );\n }\n\n /**\n * Try the login.\n */\n private login(): void {\n this.setState({\n isBusy: true,\n error: false\n }, async () => {\n const success = await this._authService.login(this.state.user, this.state.password);\n\n this.setState({\n isBusy: false,\n error: !success\n });\n });\n }\n}\n\nexport default Login;\n","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgCopy = function SvgCopy(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 18,\n height: 18,\n viewBox: \"0 0 18 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M 9 1 L 16 1 C 16.552 1 17 1.448 17 2 L 17 9 C 17 9.552 16.552 10 16 10 L 9 10 C 8.448 10 8 9.552 8 9 L 8 2 C 8 1.448 8.448 1 9 1 Z\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \" M 5.125 6 L 4 6 C 2.895 6 2 6.895 2 8 L 2 14 C 2 15.105 2.895 16 4 16 L 10 16 C 11.105 16 12 15.105 12 14 L 12 12.875\",\n stroke: \"currentColor\",\n strokeWidth: 2\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgCopy);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/copy.c627cf0b9bce73941709ff5324f011e6.svg\";","/**\n * Helper methods for clipboard.\n */\nexport class ClipboardHelper {\n /**\n * Copy the text to the clipboard.\n * @param text The text to copy.\n * @returns True id the text was copied.\n */\n public static copy(text: string | undefined): boolean {\n if (text !== undefined && text !== null) {\n try {\n const textArea = document.createElement(\"textarea\");\n\n // Prevent zooming on iOS\n textArea.style.fontSize = \"12pt\";\n // Reset box model\n textArea.style.border = \"0\";\n textArea.style.padding = \"0\";\n textArea.style.margin = \"0\";\n // Move element out of screen horizontally\n textArea.style.position = \"absolute\";\n textArea.style.left = \"-9999px\";\n // Move element to the same position vertically\n const yPosition = window.pageYOffset || document.documentElement.scrollTop;\n textArea.style.top = `${yPosition}px`;\n\n textArea.setAttribute(\"readonly\", \"\");\n textArea.value = text;\n\n document.body.append(textArea);\n\n textArea.select();\n document.execCommand(\"Copy\");\n textArea.remove();\n\n return true;\n } catch {\n // Not much we can do\n return false;\n }\n } else {\n return false;\n }\n }\n}\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgChevronRight = function SvgChevronRight(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 14,\n viewBox: \"0 0 8 14\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M5.48206 6.98708L0.318462 12.1921C0.218831 12.2891 0.139361 12.4052 0.0846907 12.5334C0.0300203 12.6617 0.00124313 12.7997 3.95234e-05 12.9393C-0.00116408 13.079 0.0252297 13.2174 0.0776802 13.3467C0.130131 13.4759 0.207588 13.5933 0.305532 13.692C0.403476 13.7907 0.519946 13.8688 0.648146 13.9217C0.776345 13.9746 0.913707 14.0012 1.05222 14C1.19072 13.9987 1.32761 13.9697 1.45487 13.9146C1.58214 13.8595 1.69725 13.7794 1.79348 13.679L7.69458 7.73051C7.89014 7.53332 8 7.26591 8 6.98708C8 6.70825 7.89014 6.44084 7.69458 6.24365L1.79348 0.295175C1.59674 0.103632 1.33323 -0.00235606 1.05972 3.97504e-05C0.786213 0.00243556 0.524578 0.113023 0.331169 0.307985C0.137761 0.502946 0.0280534 0.766681 0.0256767 1.04239C0.0232999 1.31809 0.128444 1.58371 0.318462 1.78203L5.48206 6.98708Z\",\n fill: \"currentColor\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgChevronRight);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/chevron-right.ee38b69009bb3d676c31944fd31791aa.svg\";","import classNames from \"classnames\";\nimport React, { Component, ReactNode } from \"react\";\nimport { ReactComponent as CopyIcon } from \"../../../assets/copy.svg\";\nimport \"./BlockButton.scss\";\nimport { BlockButtonProps } from \"./BlockButtonProps\";\nimport { BlockButtonState } from \"./BlockButtonState\";\n\n/**\n * Component which will display a block button.\n */\nclass BlockButton extends Component {\n /**\n * Create a new instance of BlockButton.\n * @param props The props.\n */\n constructor(props: BlockButtonProps) {\n super(props);\n\n this.state = {\n active: false,\n message: props.buttonType === \"copy\" ? \"Copied\" : \"\"\n };\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.activate()}\n >\n {this.props.buttonType === \"copy\" && (\n \n )}\n \n {this.state.active && this.state.message && (\n \n {this.state.message}\n \n )}\n
\n );\n }\n\n /**\n * Activate the button.\n */\n private activate(): void {\n this.props.onClick();\n\n this.setState({ active: true });\n setTimeout(\n () => {\n this.setState({ active: false });\n },\n 2000);\n }\n}\n\nexport default BlockButton;\n","import React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ChevronLeftIcon } from \"../../assets/chevron-left.svg\";\nimport { ReactComponent as EyeClosedIcon } from \"../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../assets/eye.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IPeersResponse } from \"../../models/peers/IPeersResponse\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { ClipboardHelper } from \"../../utils/clipboardHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport BlockButton from \"../components/layout/BlockButton\";\nimport Graph from \"../components/layout/Graph\";\nimport HealthIndicator from \"../components/layout/HealthIndicator\";\nimport \"./Peer.scss\";\nimport { PeerRouteProps } from \"./PeerRouteProps\";\nimport { PeerState } from \"./PeerState\";\n\n/**\n * Peer panel.\n */\nclass Peer extends AsyncComponent, PeerState> {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer metrics subscription id.\n */\n private _peerMetricsSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n address: \"\",\n isConnected: false,\n receivedPacketsDiff: [],\n sentPacketsDiff: [],\n relation: \"-\",\n lastUpdateTime: 0,\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._peerMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetrics,\n undefined,\n allData => {\n let alias;\n let address: string = \"\";\n let isConnected = false;\n const receivedPacketsTotal = [];\n const sentPacketsTotal = [];\n const receivedPacketsDiff = [];\n const sentPacketsDiff = [];\n let gossipMetrics;\n let relation = \"-\";\n\n for (const allDataPeers of allData) {\n if (allDataPeers?.peers) {\n const peer = allDataPeers.peers.find(p => p.id === this.props.match.params.id);\n\n if (peer && peer.id === this.props.match.params.id) {\n alias = peer.alias;\n address = `${peer.multiAddresses[0]}/p2p/${peer.id}`;\n isConnected = peer.connected;\n gossipMetrics = peer.gossipMetrics;\n relation = peer.relation;\n\n receivedPacketsTotal.push(gossipMetrics.packetsReceived);\n sentPacketsTotal.push(gossipMetrics.packetsSent);\n }\n }\n }\n\n for (let i = 1; i < receivedPacketsTotal.length; i++) {\n receivedPacketsDiff.push(\n Math.max(\n receivedPacketsTotal[i] - receivedPacketsTotal[i - 1]\n , 0)\n );\n }\n for (let i = 1; i < sentPacketsTotal.length; i++) {\n sentPacketsDiff.push(\n Math.max(\n sentPacketsTotal[i] - sentPacketsTotal[i - 1]\n , 0)\n );\n }\n\n this.setState({\n alias,\n address,\n isConnected,\n receivedPacketsDiff,\n sentPacketsDiff,\n gossipMetrics,\n relation,\n lastUpdateTime: Date.now()\n });\n }\n );\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._peerMetricsSubscription) {\n this._metricsService.unsubscribe(this._peerMetricsSubscription);\n this._peerMetricsSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n \n \n

Back to Peers

\n \n this.toggleBlindMode()}\n className=\"peer--icon-button\"\n >\n {this.state.blindMode ? : }\n \n
\n\n
\n
\n
\n {this.state.alias && (\n

{this.state.blindMode\n ? \"*\".repeat(this.state.alias.length) : this.state.alias}\n

\n )}\n \n

{this.state.blindMode\n ? \"*\".repeat(this.state.address.length) : this.state.address}\n

\n {this.state.address.length > 0 && (\n
\n {\n ClipboardHelper.copy(this.state.address);\n }}\n buttonType=\"copy\"\n labelPosition=\"right\"\n />\n
\n )}\n
\n

\n Relation: \n {`${this.state.relation.slice(0, 1).toUpperCase()}${this.state.relation.slice(1)}`}\n

\n
\n
\n \n
\n
\n
\n\n
\n \n
\n
\n
\n );\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default withRouter(Peer);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgClose = function SvgClose(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.6151 6.00057L11.6514 1.96311C11.7605 1.85778 11.8475 1.73179 11.9073 1.59248C11.9671 1.45318 11.9986 1.30335 12 1.15174C12.0013 1.00013 11.9724 0.849774 11.915 0.709449C11.8576 0.569124 11.7728 0.441638 11.6656 0.33443C11.5584 0.227222 11.4309 0.142439 11.2906 0.0850271C11.1502 0.0276156 10.9999 -0.00127433 10.8483 4.31112e-05C10.6967 0.00136056 10.5468 0.032859 10.4075 0.0927004C10.2682 0.152542 10.1422 0.239528 10.0369 0.348583L5.99943 4.3849L1.96311 0.348583C1.85778 0.239528 1.73179 0.152542 1.59248 0.0927004C1.45318 0.032859 1.30335 0.00136056 1.15174 4.31112e-05C1.00013 -0.00127433 0.849774 0.0276156 0.709449 0.0850271C0.569124 0.142439 0.441638 0.227222 0.33443 0.33443C0.227222 0.441638 0.142439 0.569124 0.0850271 0.709449C0.0276156 0.849774 -0.00127433 1.00013 4.31112e-05 1.15174C0.00136056 1.30335 0.032859 1.45318 0.0927004 1.59248C0.152542 1.73179 0.239528 1.85778 0.348583 1.96311L4.3849 5.99943L0.348583 10.0369C0.239528 10.1422 0.152542 10.2682 0.0927004 10.4075C0.032859 10.5468 0.00136056 10.6967 4.31112e-05 10.8483C-0.00127433 10.9999 0.0276156 11.1502 0.0850271 11.2906C0.142439 11.4309 0.227222 11.5584 0.33443 11.6656C0.441638 11.7728 0.569124 11.8576 0.709449 11.915C0.849774 11.9724 1.00013 12.0013 1.15174 12C1.30335 11.9986 1.45318 11.9671 1.59248 11.9073C1.73179 11.8475 1.85778 11.7605 1.96311 11.6514L5.99943 7.6151L10.0369 11.6514C10.1422 11.7605 10.2682 11.8475 10.4075 11.9073C10.5468 11.9671 10.6967 11.9986 10.8483 12C10.9999 12.0013 11.1502 11.9724 11.2906 11.915C11.4309 11.8576 11.5584 11.7728 11.6656 11.6656C11.7728 11.5584 11.8576 11.4309 11.915 11.2906C11.9724 11.1502 12.0013 10.9999 12 10.8483C11.9986 10.6967 11.9671 10.5468 11.9073 10.4075C11.8475 10.2682 11.7605 10.1422 11.6514 10.0369L7.6151 5.99943V6.00057Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgClose);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/close.3328747e4513b813fa666eafb3813ccb.svg\";","import React, { Component, ReactNode } from \"react\";\nimport \"./Dialog.scss\";\nimport { DialogProps } from \"./DialogProps\";\n\n/**\n * Component which will display a dialog.\n */\nclass Dialog extends Component {\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n \n
\n
\n
\n
\n

{this.props.title}

\n
\n
\n {this.props.children}\n
\n
\n {this.props.actions}\n
\n
\n
\n \n );\n }\n}\n\nexport default Dialog;\n","import classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { Link, RouteComponentProps, withRouter } from \"react-router-dom\";\nimport { ReactComponent as ChevronRightIcon } from \"../../assets/chevron-right.svg\";\nimport { ReactComponent as EyeClosedIcon } from \"../../assets/eye-closed.svg\";\nimport { ReactComponent as EyeIcon } from \"../../assets/eye.svg\";\nimport { ReactComponent as HealthBadIcon } from \"../../assets/health-bad.svg\";\nimport { ReactComponent as HealthGoodIcon } from \"../../assets/health-good.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { IPeersResponse } from \"../../models/peers/IPeersResponse\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { SettingsService } from \"../../services/settingsService\";\nimport { TangleService } from \"../../services/tangleService\";\nimport { DataHelper } from \"../../utils/dataHelper\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport Dialog from \"../components/layout/Dialog\";\nimport Graph from \"../components/layout/Graph\";\nimport Spinner from \"../components/layout/Spinner\";\nimport \"./Peers.scss\";\nimport { PeersState } from \"./PeersState\";\n\n/**\n * Peers panel.\n */\nclass Peers extends AsyncComponent {\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The settings service.\n */\n private readonly _settingsService: SettingsService;\n\n /**\n * The peer metrics subscription id.\n */\n private _peerMetricsSubscription?: string;\n\n /**\n * The sync status subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * Create a new instance of Peers.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._settingsService = ServiceFactory.get(\"settings\");\n\n this.state = {\n peers: [],\n dialogPeerMultiAddress: \"\",\n dialogPeerAlias: \"\",\n blindMode: this._settingsService.getBlindMode()\n };\n }\n\n /**\n * The component mounted.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n this._peerMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.PeerMetrics,\n undefined,\n allData => {\n const peers: {\n [id: string]: {\n id: string;\n alias?: string;\n address?: string;\n connected: boolean;\n relation: string;\n receivedPacketsTotal: number[];\n sentPacketsTotal: number[];\n receivedPacketsDiff: number[];\n sentPacketsDiff: number[];\n lastUpdateTime: number;\n };\n } = {};\n\n if (allData.length > 0) {\n // Only track data for the peers that appear in the most recent list.\n const finalPeerIds = new Set(allData[allData.length - 1].peers.map(p => p.id));\n\n for (const allDataPeers of allData) {\n if (allDataPeers?.peers) {\n for (const peer of allDataPeers.peers) {\n if (peer && finalPeerIds.has(peer.id)) {\n if (!peers[peer.id]) {\n peers[peer.id] = {\n id: peer.id,\n address: \"\",\n connected: peer.connected,\n relation: peer.relation,\n receivedPacketsTotal: [],\n sentPacketsTotal: [],\n receivedPacketsDiff: [],\n sentPacketsDiff: [],\n lastUpdateTime: 0\n };\n }\n peers[peer.id].id = peer.id;\n peers[peer.id].alias = peer.alias;\n peers[peer.id].address = `${peer.multiAddresses[0]}/p2p/${peer.id}`;\n peers[peer.id].connected = peer.connected;\n peers[peer.id].relation = peer.relation;\n peers[peer.id].lastUpdateTime = Date.now();\n\n if (peer.gossipMetrics) {\n peers[peer.id].receivedPacketsTotal.push(peer.gossipMetrics.packetsReceived);\n peers[peer.id].sentPacketsTotal.push(peer.gossipMetrics.packetsSent);\n }\n\n peers[peer.id].receivedPacketsDiff = [];\n for (let i = 1; i < peers[peer.id].receivedPacketsTotal.length; i++) {\n peers[peer.id].receivedPacketsDiff.push(\n Math.max(\n peers[peer.id].receivedPacketsTotal[i] -\n peers[peer.id].receivedPacketsTotal[i - 1]\n , 0)\n );\n }\n peers[peer.id].sentPacketsDiff = [];\n for (let i = 1; i < peers[peer.id].sentPacketsTotal.length; i++) {\n peers[peer.id].sentPacketsDiff.push(\n Math.max(\n peers[peer.id].sentPacketsTotal[i] -\n peers[peer.id].sentPacketsTotal[i - 1]\n , 0)\n );\n }\n }\n }\n }\n }\n }\n\n this.setState({\n peers: DataHelper.sortPeers(Object.values(peers))\n });\n }\n );\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._peerMetricsSubscription) {\n this._metricsService.unsubscribe(this._peerMetricsSubscription);\n this._peerMetricsSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n
\n
\n

Peers

\n
\n this.toggleBlindMode()}\n className=\"peers--icon-button\"\n >\n {this.state.blindMode ? : }\n \n\n this.setState({\n dialogType: \"add\",\n dialogIsEdit: true,\n dialogPeerMultiAddress: \"\",\n dialogPeerAlias: \"\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Add Peer\n \n
\n
\n
\n {this.state.peers.length === 0 && (\n

There are no peers.

\n )}\n {this.state.peers.map((p, idx) => (\n
\n
\n
\n \n {p.connected ? : }\n \n
\n \n {this.state.blindMode && (\"*\".repeat((p.alias ?? \"\").length))}\n {!this.state.blindMode && (p.alias ?? \"\")}\n \n {this.state.blindMode\n ? \"*\".repeat(p.address?.length ?? 10) : p.address}\n \n
\n
\n \n
\n

\n Relation: {`${p.relation\n .slice(0, 1).toUpperCase()}${p.relation.slice(1)}`}\n

\n {p.relation !== \"manual\" && p.address && (\n this.setState({\n dialogType: \"promote\",\n dialogIsEdit: true,\n dialogPeerMultiAddress: p.address ?? \"\",\n dialogPeerAlias: \"\",\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Promote to Manual\n \n )}\n {p.relation === \"manual\" && (\n this.setState({\n dialogType: \"edit\",\n dialogIsEdit: true,\n dialogPeerMultiAddress: p.address ?? \"\",\n dialogPeerAlias: p.alias ?? \"\",\n dialogPeerIdOriginal: p.id,\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Edit\n \n )}\n this.setState({\n dialogType: \"delete\",\n dialogIsEdit: false,\n dialogPeerMultiAddress: \"\",\n dialogPeerAlias: \"\",\n dialogPeerIdOriginal: p.id,\n dialogStatus: \"\",\n dialogBusy: false\n })}\n >\n Delete\n \n \n More details\n \n \n
\n
\n
\n ))}\n
\n {this.state.dialogType && (\n \n (this.state.dialogIsEdit ? this.peerConfigure() : this.peerDelete())}\n key={0}\n disabled={this.state.dialogBusy || (\n this.state.dialogIsEdit &&\n (this.state.dialogPeerMultiAddress.trim().length === 0)\n )}\n >\n {this.state.dialogIsEdit ? \"OK\" : \"Yes\"}\n ,\n this.setState({\n dialogPeerIdOriginal: undefined,\n dialogType: undefined\n })}\n key={1}\n disabled={this.state.dialogBusy}\n >\n {this.state.dialogIsEdit ? \"Cancel\" : \"No\"}\n \n ]}\n >\n {this.state.dialogType === \"delete\" && (\n

Are you sure you want to delete the peer?

\n )}\n {this.state.dialogIsEdit && (\n \n

Please enter the details of the peer to {this.state.dialogType}.

\n
\n Multi-Address\n
\n
\n this.setState({ dialogPeerMultiAddress: e.target.value })}\n />\n
\n
\n Alias\n
\n
\n this.setState({ dialogPeerAlias: e.target.value })}\n />\n
\n
\n )}\n {this.state.dialogBusy && }\n

\n {this.state.dialogStatus}\n

\n \n )}\n
\n
\n );\n }\n\n /**\n * Add a new peer.\n */\n private peerConfigure(): void {\n this.setState({\n dialogBusy: true,\n dialogStatus: this.state.dialogType === \"add\"\n ? \"Adding peer, please wait...\" : \"Promoting peer, please wait...\"\n }, async () => {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n if (this.state.dialogType === \"edit\" && this.state.dialogPeerIdOriginal) {\n await tangleService.peerDelete(this.state.dialogPeerIdOriginal);\n }\n\n await tangleService.peerAdd(this.state.dialogPeerMultiAddress, this.state.dialogPeerAlias);\n\n this.setState({\n dialogBusy: false,\n dialogStatus: \"\",\n dialogType: undefined\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to ${this.state.dialogType} peer: ${error.message}`\n });\n }\n }\n });\n }\n\n /**\n * Delete the specified peer.\n */\n private peerDelete(): void {\n this.setState({\n dialogBusy: true,\n dialogStatus: \"Deleting peer, please wait...\"\n }, async () => {\n if (this.state.dialogPeerIdOriginal) {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n await tangleService.peerDelete(this.state.dialogPeerIdOriginal);\n\n this.setState({\n dialogBusy: false,\n dialogStatus: \"\",\n dialogPeerIdOriginal: undefined,\n dialogType: undefined\n });\n } catch (error) {\n if (error instanceof Error) {\n this.setState({\n dialogBusy: false,\n dialogStatus: `Failed to delete peer: ${error.message}`\n });\n }\n }\n }\n });\n }\n\n /**\n * Toggle the flag for blind mode.\n */\n private toggleBlindMode(): void {\n this._settingsService.setBlindMode(!this.state.blindMode);\n this.setState({ blindMode: !this.state.blindMode });\n }\n}\n\nexport default withRouter(Peers);\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPause = function SvgPause(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6 3H8C8.53043 3 9.03914 3.21071 9.41421 3.58579C9.78929 3.96086 10 4.46957 10 5V19C10 19.5304 9.78929 20.0391 9.41421 20.4142C9.03914 20.7893 8.53043 21 8 21H6C5.46957 21 4.96086 20.7893 4.58579 20.4142C4.21071 20.0391 4 19.5304 4 19V5C4 4.46957 4.21071 3.96086 4.58579 3.58579C4.96086 3.21071 5.46957 3 6 3V3ZM6 5V19H8V5H6ZM16 3H18C18.5304 3 19.0391 3.21071 19.4142 3.58579C19.7893 3.96086 20 4.46957 20 5V19C20 19.5304 19.7893 20.0391 19.4142 20.4142C19.0391 20.7893 18.5304 21 18 21H16C15.4696 21 14.9609 20.7893 14.5858 20.4142C14.2107 20.0391 14 19.5304 14 19V5C14 4.46957 14.2107 3.96086 14.5858 3.58579C14.9609 3.21071 15.4696 3 16 3V3ZM16 5V19H18V5H16Z\",\n fill: \"#9AADCE\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPause);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/pause.8f183526ee54e218ab2d12b2e7dbea15.svg\";","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\nimport { forwardRef } from \"react\";\n\nvar SvgPlay = function SvgPlay(_ref, ref) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: ref,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.78205 4.3598L19.2432 11.5176L7.92341 18.8969L7.78205 4.3598Z\",\n stroke: \"#9AADCE\",\n strokeWidth: 2,\n strokeLinejoin: \"round\"\n })));\n};\n\nvar ForwardRef = /*#__PURE__*/forwardRef(SvgPlay);\nexport { ForwardRef as ReactComponent };\nexport default __webpack_public_path__ + \"static/media/play.0cc752a2907c29ea69983a2ce4c35c3d.svg\";","import { Converter } from \"@iota/util.js\";\nimport classNames from \"classnames\";\nimport React, { ReactNode } from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport Viva from \"vivagraphjs\";\nimport { ReactComponent as CloseIcon } from \"../../assets/close.svg\";\nimport { ReactComponent as PauseIcon } from \"../../assets/pause.svg\";\nimport { ReactComponent as PlayIcon } from \"../../assets/play.svg\";\nimport { ServiceFactory } from \"../../factories/serviceFactory\";\nimport { BLOCK_BODY_TYPE_BASIC, BLOCK_BODY_TYPE_VALIDATION } from \"../../models/tangle/blockBodyTypes\";\nimport { PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT, PAYLOAD_TYPE_SIGNED_TRANSACTION, PAYLOAD_TYPE_TAGGED_DATA } from \"../../models/tangle/payloadTypes\";\nimport { IVertex } from \"../../models/visualizer/IVertex\";\nimport { IGossipMetrics } from \"../../models/websocket/IGossipMetrics\";\nimport { WebSocketTopic } from \"../../models/websocket/webSocketTopic\";\nimport { DashboardConfigService } from \"../../services/dashboardConfigService\";\nimport { EventAggregator } from \"../../services/eventAggregator\";\nimport { MetricsService } from \"../../services/metricsService\";\nimport { TangleService } from \"../../services/tangleService\";\nimport { ThemeService } from \"../../services/themeService\";\nimport { VisualizerService } from \"../../services/visualizerService\";\nimport AsyncComponent from \"../components/layout/AsyncComponent\";\nimport \"./Visualizer.scss\";\nimport { VisualizerState } from \"./VisualizerState\";\n\n\n/**\n * Visualizer panel.\n */\nclass Visualizer extends AsyncComponent {\n /**\n * Map the vetex states to colors.\n */\n private static readonly STATE_COLOR_MAP: { [id: string]: number } = {\n unknown: 0x9AADCEFF,\n pending: 0xEC9A1EFF,\n accepted: 0xF5F24FFF,\n confirmed: 0x5CFAFFFF,\n finalized: 0x61E884FF,\n transaction: 0xC061E8FF,\n validation: 0x2260E7FF,\n tip: 0xD92121FF\n };\n\n private static readonly BLOCK_STATE_TITLE_MAP: { [id: string]: string } = {\n unknown: \"Unknown\",\n pending: \"Pending\",\n accepted: \"Accepted\",\n confirmed: \"Confirmed\",\n finalized: \"Finalized\"\n };\n\n /**\n * Color for connection between vertices.\n */\n private static readonly THEME_COLOR_LINKS: { [theme: string]: number } = {\n dark: 0xFFFFFF22,\n light: 0xDDDDDDFF\n };\n\n /**\n * Children link color.\n */\n private static readonly COLOR_LINK_CHILDREN = 0xFF5AAAFF;\n\n /**\n * Parent link color.\n */\n private static readonly COLOR_LINK_PARENTS = 0x0000FFFF;\n\n /**\n * The graph element.\n */\n private _graphElement: HTMLElement | null;\n\n /**\n * The graph instance.\n */\n private _graph?: Viva.Graph.IGraph;\n\n /**\n * The renderer instance.\n */\n private _renderer?: Viva.Graph.View.IRenderer;\n\n /**\n * The graphics instance.\n */\n private _graphics?: Viva.Graph.View.IWebGLGraphics;\n\n /**\n * The visualizer service.\n */\n private readonly _vizualizerService: VisualizerService;\n\n /**\n * The dashboard config service.\n */\n private readonly _dashboardConfigService: DashboardConfigService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The tangle service.\n */\n private readonly _tangleService: TangleService;\n\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The gossip metrics subscription id.\n */\n private _gossipMetricsSubscription?: string;\n\n /**\n * The resize method\n */\n private readonly _resize: () => void;\n\n /**\n * Entered vertex.\n */\n private _enteredVertexId?: string;\n\n /**\n * Create a new instance of Visualizer.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n\n this._graphElement = null;\n this._resize = () => this.resize();\n this._vizualizerService = ServiceFactory.get(\"visualizer\");\n this._dashboardConfigService = ServiceFactory.get(\"dashboard-config\");\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._tangleService = ServiceFactory.get(\"tangle\");\n this._themeService = ServiceFactory.get(\"theme\");\n\n this.state = {\n bps: \"-\",\n total: \"-\",\n tips: \"-\",\n accepted: \"-\",\n confirmed: \"-\",\n finalized: \"-\",\n transactions: \"-\",\n isActive: true,\n theme: this._themeService.get()\n };\n }\n\n /**\n * The component will mount.\n */\n public componentDidMount(): void {\n super.componentDidMount();\n\n window.addEventListener(\"resize\", this._resize);\n\n this._vizualizerService.subscribe(\n (vertex, op) => {\n if (op === \"add\" || op === \"update\") {\n this.updateVertex(vertex);\n } else if (op === \"delete\") {\n this.deleteVertex(vertex);\n }\n },\n counts => {\n if (this.state.isActive) {\n this.setState({\n total: counts.total.toString(),\n tips: counts.tips.toString(),\n accepted: counts.total > 0\n ? `${(counts.accepted / counts.total * 100).toFixed(2)}%`\n : \"-\",\n confirmed: counts.total > 0\n ? `${(counts.confirmed / counts.total * 100).toFixed(2)}%`\n : \"-\",\n finalized: counts.total > 0\n ? `${(counts.finalized / counts.total * 100).toFixed(2)}%`\n : \"-\",\n transactions: counts.total > 0\n ? `${(counts.transactions / counts.total * 100).toFixed(2)}%`\n : \"-\"\n });\n }\n }\n );\n\n this._gossipMetricsSubscription = this._metricsService.subscribe(\n WebSocketTopic.GossipMetrics, data => {\n if (data && this.state.isActive) {\n this.setState({ bps: data.new.toString() });\n }\n });\n\n EventAggregator.subscribe(\"theme\", \"visualizer\", theme => {\n this.setState({\n theme\n }, () => this.styleAllLinks());\n });\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n if (this._gossipMetricsSubscription) {\n this._metricsService.unsubscribe(this._gossipMetricsSubscription);\n this._gossipMetricsSubscription = undefined;\n }\n\n this._vizualizerService.unsubscribe();\n\n EventAggregator.unsubscribe(\"theme\", \"visualizer\");\n\n // This is a workaround for an issue in Safari\n // https://github.com/WebKit/WebKit/pull/1693\n // https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n if (this._graphElement) {\n const canvas = this._graphElement.children[0] as HTMLCanvasElement;\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n ctx?.clearRect(0, 0, 1, 1);\n }\n\n this._graph?.clear();\n this._renderer?.dispose();\n\n this._graph = undefined;\n this._graphics = undefined;\n this._renderer = undefined;\n this._graphElement = null;\n window.removeEventListener(\"resize\", this._resize);\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n return (\n
\n this.setupGraph(r)}\n />\n
\n
\n this.toggleActivity()}\n >\n {this.state.isActive ? : }\n \n
\n
\n
\n
\n
\n Blocks\n
\n
\n {this.state.total}\n
\n
\n BPS\n
\n
\n {this.state.bps}\n
\n
\n Tips\n
\n
\n {this.state.tips}\n
\n
\n Accepted\n
\n
\n {this.state.accepted}\n
\n
\n Confirmed\n
\n
\n {this.state.confirmed}\n
\n
\n Finalized\n
\n
\n {this.state.finalized}\n
\n
\n Transactions\n
\n
\n {this.state.transactions}\n
\n
\n
\n
\n
\n
\n
\n
Pending
\n
\n
\n
\n
Accepted
\n
\n
\n
\n
Confirmed
\n
\n
\n
\n
Finalized
\n
\n
\n
\n
Transaction
\n
\n
\n
\n
Validation
\n
\n
\n
\n
Tip
\n
\n
\n
\n
Unknown
\n
\n
\n
\n {this.state.selected && this._graphElement && (\n \n
\n
\n
\n
\n

{this.state.selected.blockStateTitle}{this.state.selected.payloadTitle}

\n
\n this.selectNode()}\n >\n \n \n
\n
\n {this.state.selected.vertex.fullId && (\n \n
\n Block Id\n
\n
\n {\n this.calculateBlockLink(this.state.selected.vertex) === \"\"\n ?
{this.state.selected.vertex.fullId}
\n :\n \n {this.state.selected.vertex.fullId}\n \n }\n
\n
\n )}\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_BASIC &&\n this.state.selected.block.body.payload?.type === PAYLOAD_TYPE_TAGGED_DATA && (\n \n
\n Tag UTF8\n
\n
\n {Converter.hexToUtf8(this.state.selected.block?.body.payload.tag)}\n
\n
\n Tag Hex\n
\n
\n {this.state.selected.block?.body.payload.tag}\n
\n
\n )}\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_BASIC &&\n this.state.selected.block.body.payload?.type === PAYLOAD_TYPE_SIGNED_TRANSACTION && (\n
\n )}\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_BASIC &&\n this.state.selected.block.body.payload?.type === PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT && (\n \n
\n Candidate\n
\n
\n {this.state.selected.block?.header.issuerId}\n
\n
\n )}\n\n {this.state.selected.block?.body?.type === BLOCK_BODY_TYPE_VALIDATION &&\n \n
\n Validator\n
\n
\n {this.state.selected.block?.header.issuerId}\n
\n
\n Highest Supported Version\n
\n
\n {this.state.selected.block?.body.highestSupportedVersion}\n
\n
\n Protocol Parameters Hash\n
\n
\n {this.state.selected.block?.body.protocolParametersHash}\n
\n
}\n
\n
\n
\n )}\n
\n );\n }\n\n /**\n * Setup the graph.\n * @param graphElement The element to use.\n */\n private setupGraph(graphElement: HTMLElement | null): void {\n this._graphElement = graphElement;\n\n if (graphElement && !this._graph) {\n this._graph = Viva.Graph.graph();\n\n this._graphics = Viva.Graph.View.webglGraphics();\n\n const layout = Viva.Graph.Layout.forceDirected(this._graph, {\n springLength: 10,\n springCoeff: 0.0001,\n stableThreshold: 0.15,\n gravity: -2,\n dragCoeff: 0.02,\n timeStep: 20,\n theta: 0.8\n });\n\n this._graphics.node(node => Viva.Graph.View.webglSquare(\n this.calculateSize(node.data),\n `#${Visualizer.STATE_COLOR_MAP[this.calculateVertexState(node.data)].toString(16)}`\n ));\n\n this._graphics.link(() => Viva.Graph.View.webglLine(\n `#${Visualizer.THEME_COLOR_LINKS[this.state.theme].toString(16)}`));\n\n this._renderer = Viva.Graph.View.renderer(this._graph, {\n container: graphElement,\n graphics: this._graphics,\n layout,\n renderLinks: true\n });\n\n const events = Viva.Graph.webglInputEvents(this._graphics, this._graph);\n\n events.click(node => this.selectNode(node));\n events.dblClick(node => {\n this.selectNode();\n window.open(\n this.calculateBlockLink(node.data),\n \"_blank\"\n );\n });\n\n events.mouseEnter(node => {\n if (!this.state.selected) {\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n if (node) {\n this._enteredVertexId = node.data?.shortId ?? node.id.slice(0, 10);\n this.connectedLinkStyle(this._enteredVertexId, true);\n }\n }\n });\n\n events.mouseLeave(node => {\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n });\n\n this._renderer.run();\n\n this._graphics.scale(1, { x: graphElement.clientWidth / 2, y: graphElement.clientHeight / 2 });\n\n for (let i = 0; i < 12; i++) {\n this._renderer.zoomOut();\n }\n }\n }\n\n /**\n * Draw a vertex.\n * @param vertex The vertex to draw.\n */\n private updateVertex(vertex: IVertex): void {\n if (this._graph) {\n let node = this.updateNodeUI(vertex.shortId);\n if (!node) {\n node = this._graph.addNode(vertex.shortId, vertex);\n }\n if (vertex.parents) {\n const added: string[] = [];\n for (let i = 0; i < vertex.parents.length; i++) {\n const parent = vertex.parents[i];\n if (!added.includes(parent) &&\n (!node.links?.some(link => link.toId === parent))) {\n added.push(parent);\n this._graph.addLink(vertex.shortId, parent);\n }\n }\n }\n }\n }\n\n /**\n * Update node style.\n * @param id The node id.\n * @returns The updated node.\n */\n private updateNodeUI(id: string): Viva.Graph.INode | undefined {\n if (this._graphics && this._graph) {\n const node = this._graph?.getNode(id);\n\n if (node) {\n const nodeUI = this._graphics.getNodeUI(id);\n if (nodeUI) {\n nodeUI.color = Visualizer.STATE_COLOR_MAP[this.calculateVertexState(node.data)];\n nodeUI.size = this.calculateSize(node.data);\n }\n }\n\n return node;\n }\n }\n\n /**\n * Calculate the state for the vertex.\n * @param vertex The vertex to calculate the state for.\n * @returns The state.\n */\n private calculateVertexState(vertex?: IVertex): string {\n if (!vertex?.parents) {\n return \"unknown\";\n }\n\n if (vertex.isTip) {\n return \"tip\";\n }\n\n if (vertex.isFinalized) {\n if (vertex.isValidationBlock) {\n return \"validation\";\n }\n\n if (vertex.isBasicBlockSignedTransaction) {\n return \"transaction\";\n }\n\n return \"finalized\";\n }\n\n if (vertex.isConfirmed) {\n return \"confirmed\";\n }\n\n if (vertex.isAccepted) {\n return \"accepted\";\n }\n\n return \"pending\";\n }\n\n /**\n * Calculate the state for the block.\n * @param vertex The vertex to calculate the state for.\n * @returns The block state.\n */\n private calculateBlockState(vertex?: IVertex): string {\n if (!vertex?.parents) {\n return \"unknown\";\n }\n\n if (vertex.isFinalized) {\n return \"finalized\";\n }\n\n if (vertex.isConfirmed) {\n return \"confirmed\";\n }\n\n if (vertex.isAccepted) {\n return \"accepted\";\n }\n\n return \"pending\";\n }\n\n /**\n * Calulate the size for the vertex.\n * @param vertex The vertex to calculate the size for.\n * @returns The size.\n */\n private calculateSize(vertex?: IVertex): number {\n if (!vertex?.parents) {\n return 10;\n }\n if (vertex.isSelected) {\n return 30;\n }\n return 20;\n }\n\n /**\n * Delete a vertex.\n * @param vertex The vertex to delete.\n */\n private deleteVertex(vertex: IVertex): void {\n if (this._graph) {\n this._graph.removeNode(vertex.shortId);\n\n if (this.state.selected &&\n this.state.selected.vertex.shortId === vertex.shortId) {\n this.setState({ selected: undefined });\n this.connectedLinkStyle(this.state.selected.vertex.shortId, false);\n }\n\n if (this._enteredVertexId &&\n this._enteredVertexId === vertex.shortId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n }\n }\n\n /**\n * Walk the graph.\n * @param startNode The node to start with.\n * @param nodeCallback The iterator method to call on each node.\n * @param linkCallback The iterator method to call on each link.\n * @param up Are we walking up or down.\n * @param seenNodes The nodes we have already seen.\n */\n private dfsIterator(\n startNode: Viva.Graph.INode,\n nodeCallback: ((nodeId: string) => boolean) | undefined,\n linkCallback: ((linkId: string) => void) | undefined,\n up: boolean,\n seenNodes: Viva.Graph.INode[]): void {\n if (this._graph) {\n seenNodes.push(startNode);\n let pointer = 0;\n\n while (seenNodes.length > pointer) {\n const node = seenNodes[pointer++];\n const nodeId = node.data?.shortId ?? node.id.slice(0, 10);\n\n if (nodeCallback?.(nodeId)) {\n continue;\n }\n\n for (const link of node.links) {\n if (!up && link.fromId === nodeId) {\n if (linkCallback) {\n linkCallback(link.id);\n }\n const linkNode = this._graph.getNode(link.toId);\n if (linkNode && !seenNodes.includes(linkNode)) {\n seenNodes.push(linkNode);\n }\n }\n\n if (up && link.toId === nodeId) {\n if (linkCallback) {\n linkCallback(link.id);\n }\n const linkNode = this._graph.getNode(link.fromId);\n if (linkNode && !seenNodes.includes(linkNode)) {\n seenNodes.push(linkNode);\n }\n }\n }\n }\n }\n }\n\n /**\n * The window was resized.\n */\n private resize(): void {\n if (this._graphics && this._graphElement) {\n this._graphics.updateSize();\n this._graphics.scale(1, {\n x: this._graphElement.clientWidth / 2,\n y: this._graphElement.clientHeight / 2\n });\n }\n }\n\n /**\n * Toggle if the visualizer is active.\n */\n private toggleActivity(): void {\n if (this._renderer) {\n if (this.state.isActive) {\n this._renderer.pause();\n } else {\n this._renderer.resume();\n }\n }\n\n this.setState({ isActive: !this.state.isActive });\n }\n\n /**\n * Select a node.\n * @param node The node to select\n */\n private selectNode(node?: Viva.Graph.INode): void {\n if (this.state.selected) {\n this.state.selected.vertex.isSelected = false;\n this.updateNodeUI(this.state.selected.vertex.shortId);\n this.connectedLinkStyle(this.state.selected.vertex.shortId, false);\n }\n\n if (node) {\n if (!node.data) {\n node.data = {\n shortId: node.id\n };\n }\n node.data.isSelected = true;\n this.updateNodeUI(node.id);\n\n if (this._enteredVertexId) {\n this.connectedLinkStyle(this._enteredVertexId, false);\n this._enteredVertexId = undefined;\n }\n this.connectedLinkStyle(node.data.shortId, true);\n\n this.setState({\n selected: {\n vertex: node?.data,\n vertexState: this.calculateVertexState(node.data),\n blockStateTitle: Visualizer.BLOCK_STATE_TITLE_MAP[this.calculateBlockState(node.data)]\n }\n },\n async () => {\n if (node.data?.fullId) {\n const block = await this._tangleService.block(node.data.fullId);\n let payloadTitle = \" - Unknown\";\n\n if (block?.body) {\n switch (block?.body.type) {\n case BLOCK_BODY_TYPE_BASIC:\n switch (block?.body.payload?.type) {\n case PAYLOAD_TYPE_TAGGED_DATA:\n payloadTitle = \" - Tagged data\";\n break;\n case PAYLOAD_TYPE_SIGNED_TRANSACTION:\n payloadTitle = \" - Signed transaction\";\n break;\n case PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT:\n payloadTitle = \" - Candidacy announcement\";\n break;\n default:\n break;\n }\n break;\n case BLOCK_BODY_TYPE_VALIDATION:\n payloadTitle = \" - Validation block\";\n break;\n default:\n break;\n }\n }\n\n this.setState({\n selected: {\n vertex: node?.data,\n vertexState: this.calculateVertexState(node.data),\n blockStateTitle: Visualizer.BLOCK_STATE_TITLE_MAP[this.calculateBlockState(node.data)],\n block,\n payloadTitle\n }\n });\n }\n });\n } else {\n this.setState({ selected: undefined });\n }\n }\n\n /**\n * Calculate the link for the block.\n * @param vertex The vertex id.\n * @returns The url for the block.\n */\n private calculateBlockLink(vertex?: IVertex): string {\n const explorerURL = this._dashboardConfigService.getExplorerURL();\n if (explorerURL === \"\" || !vertex?.fullId) {\n return \"\";\n }\n\n return `${explorerURL}/block/${vertex.fullId}`;\n }\n\n /**\n * Highlight the forward and backwards cones.\n * @param vertexId The node to highlight.\n * @param highlight Highlight or clear the coloring.\n */\n private connectedLinkStyle(vertexId: string, highlight: boolean): void {\n if (this._graph) {\n const startNode = this._graph.getNode(vertexId);\n\n if (startNode) {\n const seenForward: Viva.Graph.INode[] = [];\n const seenBackwards: Viva.Graph.INode[] = [];\n\n this.dfsIterator(\n startNode,\n undefined,\n linkId => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(linkId);\n if (linkUI) {\n linkUI.color = highlight\n ? Visualizer.COLOR_LINK_CHILDREN : Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n },\n true,\n seenBackwards\n );\n this.dfsIterator(\n startNode,\n undefined,\n linkId => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(linkId);\n if (linkUI) {\n linkUI.color = highlight\n ? Visualizer.COLOR_LINK_PARENTS : Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n },\n false,\n seenForward\n );\n }\n }\n }\n\n /**\n * Style all the links.\n */\n private styleAllLinks(): void {\n if (this._graph && this._graphics) {\n this._graph.forEachLink(link => {\n if (this._graphics) {\n const linkUI = this._graphics.getLinkUI(link.id);\n if (linkUI) {\n linkUI.color = Visualizer.THEME_COLOR_LINKS[this.state.theme];\n }\n }\n });\n }\n }\n}\n\nexport default Visualizer;\n","import { IBlockBodyBasic } from \"./IBlockBodyBasic\";\nimport { IBlockBodyValidation } from \"./IBlockBodyValidation\";\n\n/**\n * The global types for the block bodies.\n */\nexport const BLOCK_BODY_TYPE_BASIC = 0;\nexport const BLOCK_BODY_TYPE_VALIDATION = 1;\n\n/**\n * All of the block body types.\n */\nexport declare type BlockBodyTypes = IBlockBodyBasic | IBlockBodyValidation;\n","import { IPayloadCandidacyAnnouncement } from \"./IPayloadCandidacyAnnouncement\";\nimport type { IPayloadSignedTransaction } from \"./IPayloadSignedTransaction\";\nimport type { IPayloadTaggedData } from \"./IPayloadTaggedData\";\n\n/**\n * The global types for the payloads.\n */\nexport const PAYLOAD_TYPE_TAGGED_DATA = 0;\nexport const PAYLOAD_TYPE_SIGNED_TRANSACTION = 1;\nexport const PAYLOAD_TYPE_CANDIDACY_ANNOUNCEMENT = 2;\n\n/**\n * All of the payload types.\n */\nexport declare type PayloadTypes = IPayloadTaggedData | IPayloadSignedTransaction | IPayloadCandidacyAnnouncement;\n","import moment from \"moment\";\nimport React, { ReactNode } from \"react\";\nimport { Redirect, Route, RouteComponentProps, Switch, withRouter } from \"react-router-dom\";\nimport { ReactComponent as HomeIcon } from \"../assets/home.svg\";\nimport { ReactComponent as MoonIcon } from \"../assets/moon.svg\";\nimport { ReactComponent as PadlockUnlockedIcon } from \"../assets/padlock-unlocked.svg\";\nimport { ReactComponent as PadlockIcon } from \"../assets/padlock.svg\";\nimport { ReactComponent as PeersIcon } from \"../assets/peers.svg\";\nimport { ReactComponent as SunIcon } from \"../assets/sun.svg\";\nimport { ReactComponent as VisualizerIcon } from \"../assets/visualizer.svg\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { INodeInfoExtended } from \"../models/websocket/INodeInfoExtended\";\nimport { IPublicNodeStatus } from \"../models/websocket/IPublicNodeStatus\";\nimport { ISyncStatus } from \"../models/websocket/ISyncStatus\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { AuthService } from \"../services/authService\";\nimport { DashboardConfigService } from \"../services/dashboardConfigService\";\nimport { EventAggregator } from \"../services/eventAggregator\";\nimport { LocalStorageService } from \"../services/localStorageService\";\nimport { MetricsService } from \"../services/metricsService\";\nimport { ThemeService } from \"../services/themeService\";\nimport { BrandHelper } from \"../utils/brandHelper\";\nimport \"./App.scss\";\nimport { AppState } from \"./AppState\";\nimport AsyncComponent from \"./components/layout/AsyncComponent\";\nimport Breakpoint from \"./components/layout/Breakpoint\";\nimport Header from \"./components/layout/Header\";\nimport HealthIndicator from \"./components/layout/HealthIndicator\";\nimport NavMenu from \"./components/layout/NavMenu\";\nimport NavPanel from \"./components/layout/NavPanel\";\nimport Home from \"./routes/Home\";\nimport Login from \"./routes/Login\";\nimport Peer from \"./routes/Peer\";\nimport { PeerRouteProps } from \"./routes/PeerRouteProps\";\nimport Peers from \"./routes/Peers\";\nimport Visualizer from \"./routes/Visualizer\";\n\n/**\n * Main application class.\n */\nclass App extends AsyncComponent {\n /**\n * The theme service.\n */\n private readonly _themeService: ThemeService;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * The storage service.\n */\n private readonly _storageService: LocalStorageService;\n\n /**\n * The dashboard config service.\n */\n private readonly _dashboardConfigService: DashboardConfigService;\n\n /**\n * The metrics service.\n */\n private readonly _metricsService: MetricsService;\n\n /**\n * The public node status subscription id.\n */\n private _publicNodeStatusSubscription?: string;\n\n /**\n * The node info extended subscription id.\n */\n private _nodeInfoExtendedSubscription?: string;\n\n /**\n * The sync status metrics subscription id.\n */\n private _syncStatusSubscription?: string;\n\n /**\n * The node alias.\n */\n private _alias?: string;\n\n /**\n * The lastest committed slot.\n */\n private _latestCommitmentSlot?: string;\n\n /**\n * The latest finalized slot.\n */\n private _latestFinalizedSlot?: string;\n\n /**\n * The time of the last status update.\n */\n private _lastStatus: number;\n\n /**\n * The status timer.\n */\n private _statusTimer?: NodeJS.Timer;\n\n /**\n * The token expiry timer.\n */\n private _tokenExpiryTimer?: NodeJS.Timer;\n\n /**\n * Create a new instance of App.\n * @param props The props.\n */\n constructor(props: RouteComponentProps) {\n super(props);\n this._themeService = ServiceFactory.get(\"theme\");\n this._authService = ServiceFactory.get(\"auth\");\n this._dashboardConfigService = ServiceFactory.get(\"dashboard-config\");\n this._metricsService = ServiceFactory.get(\"metrics\");\n this._storageService = ServiceFactory.get(\"local-storage\");\n\n this._lastStatus = 0;\n\n this.state = {\n isLoggedIn: Boolean(this._authService.isLoggedIn()),\n theme: this._themeService.get(),\n online: false,\n isNetworkHealthy: false,\n isNodeHealthy: false\n };\n\n this.updateTitle();\n }\n\n /**\n * The component mounted.\n */\n public async componentDidMount(): Promise {\n super.componentDidMount();\n\n EventAggregator.subscribe(\"auth-state\", \"app\", isLoggedIn => {\n this.setState({\n isLoggedIn\n }, () => {\n if (this.state.isLoggedIn) {\n this.validateTokenPeriodically();\n }\n });\n });\n\n EventAggregator.subscribe(\"theme\", \"app\", theme => {\n this.setState({ theme });\n });\n\n this._nodeInfoExtendedSubscription = this._metricsService.subscribe(\n WebSocketTopic.NodeInfoExtended,\n data => {\n if (data && data.nodeAlias !== this._alias) {\n this._alias = data.nodeAlias;\n this.updateTitle();\n }\n });\n\n this._syncStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.SyncStatus,\n data => {\n if (data) {\n const latestCommitmentSlot = data.latestCommitmentSlot ? data.latestCommitmentSlot.toString() : \"\";\n const latestFinalizedSlot = data.latestFinalizedSlot ? data.latestFinalizedSlot.toString() : \"\";\n\n if (latestCommitmentSlot !== this._latestCommitmentSlot || latestFinalizedSlot !== this._latestFinalizedSlot) {\n this._latestCommitmentSlot = latestCommitmentSlot;\n this._latestFinalizedSlot = latestFinalizedSlot;\n this.updateTitle();\n }\n }\n });\n\n this._publicNodeStatusSubscription = this._metricsService.subscribe(\n WebSocketTopic.PublicNodeStatus,\n data => {\n if (data) {\n this._lastStatus = Date.now();\n if (!this.state.online) {\n EventAggregator.publish(\"online\", true);\n this.setState({\n online: true\n });\n }\n if (data.isNodeHealthy !== this.state.isNodeHealthy) {\n this.setState({ isNodeHealthy: data.isNodeHealthy });\n }\n if (data.isNetworkHealthy !== this.state.isNetworkHealthy) {\n this.setState({ isNetworkHealthy: data.isNetworkHealthy });\n }\n }\n });\n\n this._statusTimer = setInterval(() => {\n if (Date.now() - this._lastStatus > 30000 && this.state.online) {\n this.setState({\n online: false\n });\n\n EventAggregator.publish(\"online\", false);\n }\n }, 1000);\n }\n\n /**\n * The component will unmount.\n */\n public componentWillUnmount(): void {\n super.componentWillUnmount();\n\n EventAggregator.unsubscribe(\"auth-state\", \"app\");\n EventAggregator.unsubscribe(\"theme\", \"app\");\n\n if (this._nodeInfoExtendedSubscription) {\n this._metricsService.unsubscribe(this._nodeInfoExtendedSubscription);\n this._nodeInfoExtendedSubscription = undefined;\n }\n\n if (this._syncStatusSubscription) {\n this._metricsService.unsubscribe(this._syncStatusSubscription);\n this._syncStatusSubscription = undefined;\n }\n\n if (this._publicNodeStatusSubscription) {\n this._metricsService.unsubscribe(this._publicNodeStatusSubscription);\n this._publicNodeStatusSubscription = undefined;\n }\n\n if (this._statusTimer !== undefined) {\n clearInterval(this._statusTimer);\n this._statusTimer = undefined;\n }\n\n this.clearTokenExpiryInterval();\n }\n\n /**\n * Render the component.\n * @returns The node to render.\n */\n public render(): ReactNode {\n const sections = [\n {\n label: \"Home\",\n icon: ,\n route: \"/\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Peers\",\n icon: ,\n route: \"/peers\",\n hidden: !this.state.isLoggedIn\n },\n {\n label: \"Visualizer\",\n icon: ,\n route: \"/visualizer\"\n },\n {\n label: \"Login\",\n icon: ,\n route: \"/login\",\n hidden: this.state.isLoggedIn\n },\n {\n label: \"Logout\",\n icon: ,\n function: () => this._authService.logout(),\n hidden: !this.state.isLoggedIn\n }\n ];\n\n const endSections = [\n {\n label: \"Light\",\n icon: ,\n function: () => this._themeService.apply(\"light\", true),\n hidden: this.state.theme === \"light\"\n },\n {\n label: \"Dark\",\n icon: ,\n function: () => this._themeService.apply(\"dark\", true),\n hidden: this.state.theme === \"dark\"\n }\n ];\n\n return (\n
\n \n \n \n
\n
\n \n \n \n \n \n
\n
\n {!this.state.online && (\n

The node is offline or loading.

\n )}\n {this.state.online && (\n \n \n
\n \n \n
\n
\n \n {this.state.isLoggedIn && [\n ()}\n key=\"home\"\n />,\n ()}\n key=\"peers\"\n />,\n ) =>\n ()}\n key=\"peer\"\n />\n ]}\n {!this.state.isLoggedIn && (\n ()}\n />\n )}\n ()}\n />\n ()}\n />\n ()}\n />\n \n
\n )}\n
\n
\n
\n );\n }\n\n /**\n * Update the window title.\n */\n private updateTitle(): void {\n let title = BrandHelper.getConfiguration().name;\n\n if (this._alias) {\n title += ` (${this._alias})`;\n }\n if (this._latestCommitmentSlot && this._latestFinalizedSlot) {\n title += ` ${this._latestFinalizedSlot} / ${this._latestCommitmentSlot}`;\n }\n\n document.title = title;\n }\n\n /**\n * Refresh the token one minute before it expires.\n */\n private validateTokenPeriodically() {\n this.clearTokenExpiryInterval();\n const jwt = this._storageService.load(\"dashboard-jwt\");\n const expiryTimestamp = this.getTokenExpiry(jwt);\n const expiryDate = moment(expiryTimestamp);\n const refreshTokenDate = moment(expiryDate).subtract(1, \"minutes\");\n\n this._tokenExpiryTimer = setInterval(async () => {\n const now = moment();\n if (now.isAfter(expiryDate)) {\n this._authService.logout();\n this.clearTokenExpiryInterval();\n } else if (now.isBetween(refreshTokenDate, expiryDate)) {\n await this._authService.initialize();\n }\n }, 5000);\n }\n\n /**\n * Decode jwt to get expiry time.\n * @param token The jwt.\n * @returns The expiry time.\n */\n private getTokenExpiry(token: string) {\n const payload = token.split(\".\")[1];\n const decodedToken = window.atob(payload);\n const parsedToken = JSON.parse(decodedToken);\n const expiryTimestamp = parsedToken.exp * 1000;\n\n return expiryTimestamp;\n }\n\n /**\n * Clear token expiry interval.\n */\n private clearTokenExpiryInterval() {\n if (this._tokenExpiryTimer !== undefined) {\n clearInterval(this._tokenExpiryTimer);\n this._tokenExpiryTimer = undefined;\n }\n }\n}\n\nexport default withRouter(App);\n","/**\n * Fetch from an endpoint.\n */\nexport class FetchHelper {\n /**\n * Fetch a payload from an endpoint.\n * @param baseUrl The base url for the api.\n * @param path The path for the endpoint.\n * @param method The method to send the request with.\n * @param payload The payload to send.\n * @param headers The headers to include in the fetch.\n * @param timeout Timeout for the request.\n * @returns The fetched payload and any cookies.\n */\n public static async json(\n baseUrl: string,\n path: string,\n method: \"get\" | \"post\" | \"put\" | \"delete\",\n payload?: T,\n headers?: { [id: string]: string },\n timeout?: number\n ): Promise {\n headers ??= {};\n headers[\"Content-Type\"] = \"application/json\";\n\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(\n () => {\n if (controller) {\n controller.abort();\n }\n },\n timeout);\n }\n\n try {\n const res = await fetch(\n `${baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`,\n {\n method,\n headers,\n body: payload ? JSON.stringify(payload) : undefined,\n signal: controller ? controller.signal : undefined\n });\n\n const json = (res.status === 204) ? {}\n : await res.json()\n .catch(error => {\n throw new Error(`Fetched failed: ${error.message}`);\n });\n\n return json as U;\n } catch (err) {\n if (err instanceof Error) {\n throw err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } else {\n throw err;\n }\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Fetch a payload from an endpoint.\n * @param baseUrl The base url for the api.\n * @param path The path for the endpoint.\n * @param method The method to send the request with.\n * @param payload The payload to send.\n * @param headers The headers to include in the fetch.\n * @param timeout Timeout for the request.\n * @returns The fetched payload and any cookies.\n */\n public static async text(\n baseUrl: string,\n path: string,\n method: \"get\" | \"post\" | \"put\" | \"delete\",\n payload?: T,\n headers?: { [id: string]: string },\n timeout?: number\n ): Promise {\n headers ??= {};\n headers[\"Content-Type\"] = \"text/plain\";\n\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(\n () => {\n if (controller) {\n controller.abort();\n }\n },\n timeout);\n }\n\n try {\n const res = await fetch(\n `${baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`,\n {\n method,\n headers,\n body: payload ? JSON.stringify(payload) : undefined,\n signal: controller ? controller.signal : undefined\n });\n const json = (res.status === 204) ? {}\n : await res.json()\n .catch(error => {\n throw new Error(`Fetched failed: ${res.statusText}`);\n });\n\n return json as U;\n } catch (err) {\n if (err instanceof Error) {\n throw err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } else {\n throw err;\n }\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Join params onto command.\n * @param params The params to add.\n * @returns The joined parameters.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public static urlParams(params: { [id: string]: any }): string {\n const urlParams = [];\n for (const key in params) {\n if (params[key] !== null && params[key] !== undefined) {\n urlParams.push(`${encodeURIComponent(key)}=${encodeURIComponent(params[key] as string)}`);\n }\n }\n return urlParams.length > 0 ? `?${urlParams.join(\"&\")}` : \"\";\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { FetchHelper } from \"../utils/fetchHelper\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Service to handle authentication.\n */\nexport class AuthService {\n /**\n * The jwt if authenticated.\n */\n private _jwt?: string;\n\n /**\n * The csrf cookie from the login operation.\n */\n private readonly _csrf?: string;\n\n /**\n * Create a new instance of AuthService.\n */\n constructor() {\n this._jwt = undefined;\n\n if (document.cookie) {\n const cookies = document.cookie.split(\";\");\n\n const csrf = cookies.find(c => c.trim().startsWith(\"_csrf\"));\n\n if (csrf) {\n const parts = csrf.split(\"=\");\n if (parts.length === 2) {\n this._csrf = parts[1];\n }\n }\n }\n }\n\n /**\n * Initialise service.\n */\n public async initialize(): Promise {\n const storageService = ServiceFactory.get(\"local-storage\");\n\n const jwt = storageService.load(\"dashboard-jwt\");\n\n if (jwt) {\n await this.login(undefined, undefined, jwt);\n }\n }\n\n /**\n * Try performing a login.\n * @param user The username to login with.\n * @param password The password to login with.\n * @param jwt The jwt to login with.\n * @returns True if the login was successful.\n */\n public async login(\n user: string | undefined,\n password: string | undefined,\n jwt?: string): Promise {\n this.logout();\n\n try {\n const headers: Record = {};\n if (this._csrf) {\n headers[\"X-CSRF-Token\"] = this._csrf;\n }\n\n const response = await FetchHelper.json<{\n user?: string;\n password?: string;\n jwt?: string;\n }, {\n jwt?: string;\n }>(\n `${window.location.protocol}//${window.location.host}`,\n \"/dashboard/auth\",\n \"post\",\n {\n user,\n password,\n jwt\n },\n headers);\n\n if (response.jwt) {\n const storageService = ServiceFactory.get(\"local-storage\");\n this._jwt = response.jwt;\n storageService.save(\"dashboard-jwt\", this._jwt);\n EventAggregator.publish(\"auth-state\", true);\n }\n } catch (err) {\n console.error(err);\n }\n\n return this._jwt !== undefined;\n }\n\n /**\n * Logout.\n */\n public logout(): void {\n if (this._jwt) {\n const storageService = ServiceFactory.get(\"local-storage\");\n storageService.remove(\"dashboard-jwt\");\n this._jwt = undefined;\n EventAggregator.publish(\"auth-state\", false);\n }\n }\n\n /**\n * Get the jwt.\n * @returns The jwt if logged in.\n */\n public isLoggedIn(): string | undefined {\n return this._jwt;\n }\n\n /**\n * Get the csrf.\n * @returns The csrf.\n */\n public csrf(): string | undefined {\n return this._csrf;\n }\n\n /**\n * Build authentication headers.\n * @returns The authentication headers.\n */\n public buildAuthHeaders(): Record {\n const headers: Record = {};\n const jwt = this.isLoggedIn();\n if (jwt) {\n headers.Authorization = `Bearer ${jwt}`;\n }\n const csrf = this.csrf();\n if (csrf) {\n headers[\"X-CSRF-Token\"] = csrf;\n }\n\n return headers;\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { FetchHelper } from \"../utils/fetchHelper\";\nimport { AuthService } from \"./authService\";\n/**\n * Service to handle getting confiuration from the dashboard backend.\n */\nexport class DashboardConfigService {\n /**\n * The explorer URL.\n */\n private _explorerURL: string;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of DashboardConfigService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n this._explorerURL = \"\";\n }\n\n /**\n * Initialise DashboardConfigService.\n */\n public async initialize(): Promise {\n try {\n this._explorerURL = await this.getExplorerURLBackend();\n } catch {}\n }\n\n /**\n * Get the explorer URL.\n * @returns The explorer URL.\n */\n public getExplorerURL(): string {\n return this._explorerURL;\n }\n\n /**\n * Get the explorer URL from the backend.\n * @returns The explorer URL.\n */\n private async getExplorerURLBackend(): Promise {\n const headers = this._authService.buildAuthHeaders();\n\n const response = await FetchHelper.json(\n `${window.location.protocol}//${window.location.host}`,\n \"/dashboard/settings\",\n \"get\",\n undefined,\n headers);\n\n return response.explorerUrl;\n }\n}\n","/**\n * Class to use local storage.\n */\nexport class LocalStorageService {\n /**\n * Load an item from local storage.\n * @param key The key of the item to load.\n * @returns The item loaded.\n */\n public load(key: string): T {\n let obj;\n if (window.localStorage) {\n try {\n const json = window.localStorage.getItem(key);\n\n if (json) {\n obj = JSON.parse(json);\n }\n } catch {\n // Nothing to do\n }\n }\n\n return obj as T;\n }\n\n /**\n * Save an item to local storage.\n * @param key The key of the item to store.\n * @param item The item to store.\n */\n public save(key: string, item: T): void {\n if (window.localStorage) {\n try {\n const json = JSON.stringify(item);\n window.localStorage.setItem(key, json);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Delete an item in local storage.\n * @param key The key of the item to store.\n */\n public remove(key: string): void {\n if (window.localStorage) {\n try {\n window.localStorage.removeItem(key);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Clear the local storage.\n * @param rootKey Clear all items that start with the root key, if undefined clear everything.\n */\n public clear(rootKey: string): void {\n if (window.localStorage) {\n try {\n if (rootKey) {\n const keysToRemove = [];\n const len = window.localStorage.length;\n for (let i = 0; i < len; i++) {\n const key = window.localStorage.key(i);\n if (key?.startsWith(rootKey)) {\n keysToRemove.push(key);\n }\n }\n for (const key of keysToRemove) {\n window.localStorage.removeItem(key);\n }\n } else {\n window.localStorage.clear();\n }\n } catch {\n // Nothing to do\n }\n }\n }\n}\n","import { Converter, RandomHelper } from \"@iota/util.js\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { WebSocketService } from \"../services/webSocketService\";\n\n/**\n * Service to handle the websocket connection.\n */\nexport class MetricsService {\n /**\n * The web socket service.\n */\n private readonly _webSocketService: WebSocketService;\n\n /**\n * The web socket subscriptions.\n */\n private _webSocketSubscriptions: string[];\n\n /**\n * The cached data.\n */\n private _cached: {\n [topic: number]: unknown[];\n };\n\n /**\n * Subscribers to the messages.\n */\n private readonly _subscriptions: {\n [topic: number]: {\n subscriptionId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleCallback?: (data: any) => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n multipleCallback?: (data: any[]) => void;\n }[];\n };\n\n /**\n * Create a new instance of MetricsService.\n */\n constructor() {\n this._webSocketService = ServiceFactory.get(\"web-socket\");\n this._webSocketSubscriptions = [];\n this._subscriptions = {};\n this._cached = {};\n }\n\n /**\n * Initialise the service.\n */\n public initialize(): void {\n const topics: { topic: WebSocketTopic; isPublic: boolean }[] = [\n { topic: WebSocketTopic.SyncStatus, isPublic: true },\n { topic: WebSocketTopic.NodeInfoExtended, isPublic: false },\n { topic: WebSocketTopic.PublicNodeStatus, isPublic: true },\n { topic: WebSocketTopic.GossipMetrics, isPublic: true },\n { topic: WebSocketTopic.DatabaseSizeMetric, isPublic: false },\n { topic: WebSocketTopic.PeerMetrics, isPublic: false },\n { topic: WebSocketTopic.NetworkMetrics, isPublic: true }\n ];\n\n for (const t of topics) {\n this._webSocketSubscriptions.push(\n this._webSocketService.subscribe(\n t.topic,\n !t.isPublic,\n data => {\n this.triggerCallbacks(t.topic, data);\n }));\n }\n }\n\n /**\n * Closedown the service.\n */\n public closedown(): void {\n for (let i = 0; i < this._webSocketSubscriptions.length; i++) {\n this._webSocketService.unsubscribe(this._webSocketSubscriptions[i]);\n }\n this._webSocketSubscriptions = [];\n }\n\n /**\n * Subscribe to a topic.\n * @param topic The topic to subscribe to.\n * @param singleCallback The callback to send the data to.\n * @param multipleCallback The callback to send the data to.\n * @returns The subscription id.\n */\n public subscribe(\n topic: WebSocketTopic,\n singleCallback?: (data: T) => void, multipleCallback?: (dataAll: T[]) => void): string {\n if (!this._subscriptions[topic]) {\n this._subscriptions[topic] = [];\n }\n\n const subscriptionId = Converter.bytesToHex(RandomHelper.generate(32));\n\n this._subscriptions[topic].push({\n subscriptionId,\n singleCallback,\n multipleCallback\n });\n\n if (this._cached[topic] && this._cached[topic].length > 0) {\n if (multipleCallback) {\n multipleCallback(this._cached[topic] as T[]);\n }\n if (singleCallback) {\n singleCallback((this._cached[topic][this._cached[topic].length - 1] as T));\n }\n }\n\n return subscriptionId;\n }\n\n /**\n * Unsubscribe from a topic.\n * @param subscriptionId The subscription to unsubscribe.\n */\n public unsubscribe(subscriptionId: string): void {\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n const subscriptionIdx = this._subscriptions[topic].findIndex(s => s.subscriptionId === subscriptionId);\n if (subscriptionIdx >= 0) {\n this._subscriptions[topic].splice(subscriptionIdx, 1);\n\n if (this._subscriptions[topic].length === 0) {\n delete this._subscriptions[topic];\n break;\n }\n }\n }\n }\n\n /**\n * Trigger the callback handlers for the subscribers.\n * @param topic The message topic.\n * @param data The message data.\n */\n private triggerCallbacks(topic: WebSocketTopic, data: unknown): void {\n if (!this._cached[topic]) {\n this._cached[topic] = [];\n }\n if (topic === WebSocketTopic.DatabaseSizeMetric || topic === WebSocketTopic.NetworkMetrics) {\n if (Array.isArray(data)) {\n this._cached[topic].push(...data as unknown[]);\n } else {\n this._cached[topic].push(data);\n }\n } else {\n this._cached[topic].push(data);\n }\n this._cached[topic] = this._cached[topic].slice(-60);\n\n if (this._subscriptions[topic]) {\n for (const subscriber of this._subscriptions[topic]) {\n if (subscriber.singleCallback) {\n subscriber.singleCallback(this._cached[topic][this._cached[topic].length - 1]);\n }\n if (subscriber.multipleCallback) {\n subscriber.multipleCallback(this._cached[topic]);\n }\n }\n }\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { SessionStorageService } from \"./sessionStorageService\";\nimport { TangleService } from \"./tangleService\";\n\n/**\n * Service to handle getting confiuration from the node.\n */\nexport class NodeConfigService {\n /**\n * The network id.\n */\n private _networkId: string;\n\n /**\n * The storage servie.\n */\n private readonly _storageService: SessionStorageService;\n\n /**\n * Create a new instance of NodeConfigService.\n */\n constructor() {\n this._storageService = ServiceFactory.get(\"session-storage\");\n this._networkId = \"\";\n }\n\n /**\n * Initialise NodeConfigService.\n */\n public async initialize(): Promise {\n this._networkId = this._storageService.load(\"networkId\");\n\n if (!this._networkId) {\n const tangleService = ServiceFactory.get(\"tangle\");\n\n try {\n const info = await tangleService.info();\n this.setNetworkId(info.protocol.networkName);\n } catch {}\n }\n }\n\n /**\n * Get the network id.\n * @returns The network id.\n */\n public getNetworkId(): string {\n return this._networkId;\n }\n\n /**\n * Set the network id.\n * @param networkId The new network id.\n */\n public setNetworkId(networkId: string): void {\n this._networkId = networkId;\n this._storageService.save(\"networkId\", this._networkId);\n }\n}\n","/**\n * Class to use session storage.\n */\n export class SessionStorageService {\n /**\n * Load an item from session storage.\n * @param key The key of the item to load.\n * @returns The item loaded.\n */\n public load(key: string): T {\n let obj;\n if (window.sessionStorage) {\n try {\n const json = window.sessionStorage.getItem(key);\n\n if (json) {\n obj = JSON.parse(json);\n }\n } catch {\n // Nothing to do\n }\n }\n\n return obj as T;\n }\n\n /**\n * Save an item to session storage.\n * @param key The key of the item to store.\n * @param item The item to store.\n */\n public save(key: string, item: T): void {\n if (window.sessionStorage) {\n try {\n const json = JSON.stringify(item);\n window.sessionStorage.setItem(key, json);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Delete an item in session storage.\n * @param key The key of the item to store.\n */\n public remove(key: string): void {\n if (window.sessionStorage) {\n try {\n window.sessionStorage.removeItem(key);\n } catch {\n // Nothing to do\n }\n }\n }\n\n /**\n * Clear the session storage.\n * @param rootKey Clear all items that start with the root key, if undefined clear everything.\n */\n public clear(rootKey: string): void {\n if (window.sessionStorage) {\n try {\n if (rootKey) {\n const keysToRemove = [];\n const len = window.sessionStorage.length;\n for (let i = 0; i < len; i++) {\n const key = window.sessionStorage.key(i);\n if (key?.startsWith(rootKey)) {\n keysToRemove.push(key);\n }\n }\n for (const key of keysToRemove) {\n window.sessionStorage.removeItem(key);\n }\n } else {\n window.sessionStorage.clear();\n }\n } catch {\n // Nothing to do\n }\n }\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Class to use for storing settings.\n */\nexport class SettingsService {\n /**\n * The blind mode setting.\n */\n private _blindMode: boolean;\n\n /**\n * The storage servie.\n */\n private readonly _storageService: LocalStorageService;\n\n /**\n * Create a new instance of SettingsService.\n */\n constructor() {\n this._storageService = ServiceFactory.get(\"local-storage\");\n this._blindMode = false;\n }\n\n /**\n * Initialize the service.\n */\n public initialize(): void {\n this._blindMode = this._storageService.load(\"blindMode\") ?? false;\n }\n\n /**\n * Get the blind mode setting.\n * @returns The blind mode.\n */\n public getBlindMode(): boolean {\n return this._blindMode;\n }\n\n /**\n * Set the blind mode setting.\n * @param blindMode The new blind mode.\n */\n public setBlindMode(blindMode: boolean): void {\n this._blindMode = blindMode;\n this._storageService.save(\"blindMode\", this._blindMode);\n EventAggregator.publish(\"settings.blindMode\", this._blindMode);\n }\n}\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Class to represent errors from Client.\n */\nexport class ClientError extends Error {\n /**\n * The route the request was made to.\n */\n public route: string;\n\n /**\n * The HTTP status code returned.\n */\n public httpStatus: number;\n\n /**\n * The code return in the payload.\n */\n public code?: string;\n\n /**\n * Create a new instance of ClientError.\n * @param message The message for the error.\n * @param route The route the request was made to.\n * @param httpStatus The http status code.\n * @param code The code in the payload.\n */\n constructor(message: string, route: string, httpStatus: number, code?: string) {\n super(message);\n this.route = route;\n this.httpStatus = httpStatus;\n this.code = code;\n }\n}\n","// Copyright 2020 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\nimport { Converter } from \"@iota/util.js\";\nimport { HexEncodedString } from \"../hexEncodedTypes\";\nimport { IClient } from \"../IClient\";\nimport { INodeInfo } from \"../info/INodeInfo\";\nimport { IResponse } from \"../IResponse\";\nimport { IPeer } from \"../peers/IPeer\";\nimport { IBlock } from \"../tangle/IBlock\";\nimport { ClientError } from \"./clientError\";\nimport type { SingleNodeClientOptions } from \"./singleNodeClientOptions\";\n\n/**\n * Client for API communication.\n */\nexport class SingleNodeClient implements IClient {\n /**\n * The endpoint for the API.\n * @internal\n */\n private readonly _endpoint: string;\n\n /**\n * The base path for the API.\n * @internal\n */\n private readonly _basePath: string;\n\n /**\n * The base path for the core API.\n * @internal\n */\n private readonly _coreApiPath: string;\n\n /**\n * The base path for the management API.\n * @internal\n */\n private readonly _managementApiPath: string;\n\n /**\n * The Api request timeout.\n * @internal\n */\n private readonly _timeout?: number;\n\n /**\n * Username for the endpoint.\n * @internal\n */\n private readonly _userName?: string;\n\n /**\n * Password for the endpoint.\n * @internal\n */\n private readonly _password?: string;\n\n /**\n * Additional headers to include in the requests.\n * @internal\n */\n private readonly _headers?: { [id: string]: string };\n\n /**\n * Create a new instance of client.\n * @param endpoint The endpoint.\n * @param options Options for the client.\n */\n constructor(endpoint: string, options?: SingleNodeClientOptions) {\n if (!endpoint) {\n throw new Error(\"The endpoint can not be empty\");\n }\n this._endpoint = endpoint.replace(/\\/+$/, \"\");\n this._basePath = options?.basePath ?? \"/api/\";\n this._coreApiPath = `${this._basePath}core/v3/`;\n this._managementApiPath = `${this._basePath}management/v1/`;\n this._timeout = options?.timeout;\n this._userName = options?.userName;\n this._password = options?.password;\n this._headers = options?.headers;\n\n if (this._userName && this._password && !this._endpoint.startsWith(\"https\")) {\n throw new Error(\"Basic authentication requires the endpoint to be https\");\n }\n\n if (this._userName && this._password && (this._headers?.authorization || this._headers?.Authorization)) {\n throw new Error(\"You can not supply both user/pass and authorization header\");\n }\n }\n\n /**\n * Get the info about the node.\n * @returns The node information.\n */\n public async info(): Promise {\n return this.fetchJson(this._coreApiPath, \"get\", \"info\");\n }\n\n /**\n * Get the block data by id.\n * @param blockId The block to get the data for.\n * @returns The block data.\n */\n public async block(blockId: HexEncodedString): Promise {\n return this.fetchJson(this._coreApiPath, \"get\", `blocks/${blockId}`);\n }\n\n /**\n * Add a new peer.\n * @param multiAddress The address of the peer to add.\n * @param alias An optional alias for the peer.\n * @returns The details for the created peer.\n */\n public async peerAdd(multiAddress: string, alias?: string): Promise {\n return this.fetchJson<\n {\n multiAddress: string;\n alias?: string;\n },\n IPeer\n >(this._managementApiPath, \"post\", \"peers\", {\n multiAddress,\n alias\n });\n }\n\n /**\n * Delete a peer.\n * @param peerId The peer to delete.\n * @returns Nothing.\n */\n public async peerDelete(peerId: string): Promise {\n // eslint-disable-next-line @typescript-eslint/no-invalid-void-type\n return this.fetchJson(this._managementApiPath, \"delete\", `peers/${peerId}`);\n }\n\n /**\n * Perform a request in json format.\n * @param basePath The base path for the request.\n * @param method The http method.\n * @param route The route of the request.\n * @param requestData Request to send to the endpoint.\n * @returns The response.\n * @internal\n */\n private async fetchJson(basePath: string, method: \"get\" | \"post\" | \"delete\", route: string, requestData?: T): Promise {\n const response = await this.fetchWithTimeout(\n method,\n `${basePath}${route}`,\n { \"Content-Type\": \"application/json\" },\n requestData ? JSON.stringify(requestData) : undefined\n );\n\n let errorMessage: string | undefined;\n let errorCode: string | undefined;\n\n if (response.ok) {\n if (response.status === 204) {\n // No content\n return {} as U;\n }\n try {\n const responseData: U & IResponse = await response.json();\n\n if (responseData.error) {\n errorMessage = responseData.error.message;\n errorCode = responseData.error.code;\n } else {\n return responseData;\n }\n } catch {}\n }\n\n if (!errorMessage) {\n try {\n const json = await response.json();\n if (json.error) {\n errorMessage = json.error.message;\n errorCode = json.error.code;\n }\n } catch {}\n }\n\n if (!errorMessage) {\n try {\n const text = await response.text();\n if (text.length > 0) {\n const match = /code=(\\d+), message=(.*)/.exec(text);\n if (match?.length === 3) {\n errorCode = match[1];\n errorMessage = match[2];\n } else {\n errorMessage = text;\n }\n }\n } catch {}\n }\n\n throw new ClientError(\n errorMessage ?? response.statusText,\n route,\n response.status,\n errorCode ?? response.status.toString()\n );\n }\n\n /**\n * Perform a fetch request.\n * @param method The http method.\n * @param route The route of the request.\n * @param headers The headers for the request.\n * @param body The request body.\n * @returns The response.\n * @internal\n */\n private async fetchWithTimeout(\n method: \"get\" | \"post\" | \"delete\",\n route: string,\n headers?: { [id: string]: string },\n body?: string | Uint8Array\n ): Promise {\n let controller: AbortController | undefined;\n let timerId: NodeJS.Timeout | undefined;\n\n if (this._timeout !== undefined) {\n controller = new AbortController();\n timerId = setTimeout(() => {\n if (controller) {\n controller.abort();\n }\n }, this._timeout);\n }\n\n const finalHeaders: { [id: string]: string } = {};\n\n if (this._headers) {\n for (const header in this._headers) {\n finalHeaders[header] = this._headers[header];\n }\n }\n\n if (headers) {\n for (const header in headers) {\n finalHeaders[header] = headers[header];\n }\n }\n\n if (this._userName && this._password) {\n const userPass = Converter.bytesToBase64(Converter.utf8ToBytes(`${this._userName}:${this._password}`));\n finalHeaders.Authorization = `Basic ${userPass}`;\n }\n\n try {\n const response = await fetch(`${this._endpoint}${route}`, {\n method,\n headers: finalHeaders,\n body,\n signal: controller ? controller.signal : undefined\n });\n\n return response;\n } catch (err) {\n throw err instanceof Error && err.name === \"AbortError\" ? new Error(\"Timeout\") : err;\n } finally {\n if (timerId) {\n clearTimeout(timerId);\n }\n }\n }\n\n /**\n * Combine the query params.\n * @param queryParams The quer params to combine.\n * @returns The combined query params.\n */\n private combineQueryParams(queryParams?: string[]): string {\n return queryParams && queryParams.length > 0 ? `?${queryParams.join(\"&\")}` : \"\";\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { SingleNodeClient } from \"../models/clients/singleNodeClient\";\nimport { IClient } from \"../models/IClient\";\nimport { INodeInfo } from \"../models/info/INodeInfo\";\nimport { IBlock } from \"../models/tangle/IBlock\";\nimport { AuthService } from \"./authService\";\n/**\n * Service to handle api requests.\n */\nexport class TangleService {\n /**\n * The node info.\n */\n private _nodeInfo?: INodeInfo;\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of TangleService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n }\n\n /**\n * Get the node info.\n * @returns The node info.\n */\n public async info(): Promise {\n const client = this.buildClient();\n this._nodeInfo = await client.info();\n return this._nodeInfo;\n }\n\n /**\n * Get the block payload.\n * @param blockId The block to get.\n * @returns The response data.\n */\n public async block(blockId: string): Promise {\n try {\n const client = this.buildClient();\n return await client.block(blockId);\n } catch {}\n }\n\n /**\n * Add a peer.\n * @param peerAddress The peer address.\n * @param peerAlias The peer alias.\n */\n public async peerAdd(peerAddress: string, peerAlias: string): Promise {\n const client = this.buildClient();\n\n await client.peerAdd(peerAddress, peerAlias);\n }\n\n /**\n * Delete a peer.\n * @param peerId The peer to delete.\n */\n public async peerDelete(peerId: string): Promise {\n const client = this.buildClient();\n\n await client.peerDelete(peerId);\n }\n\n\n /**\n * Build a client with auth header.\n * @returns The client.\n */\n private buildClient(): IClient {\n const headers = this._authService.buildAuthHeaders();\n\n return new SingleNodeClient(\n `${window.location.protocol}//${window.location.host}`,\n {\n basePath: \"/dashboard/api/\",\n headers\n });\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { EventAggregator } from \"./eventAggregator\";\nimport { LocalStorageService } from \"./localStorageService\";\n\n/**\n * Class the help with themes.\n */\nexport class ThemeService {\n /**\n * The theme.\n */\n private _theme: string;\n\n /**\n * Create a new instance of ThemeService.\n */\n constructor() {\n this._theme = \"light\";\n }\n\n /**\n * Initialize the theme.\n */\n public initialize(): void {\n const storageService = ServiceFactory.get(\"local-storage\");\n\n const theme = storageService.load(\"theme\");\n\n this.apply(theme, false);\n }\n\n /**\n * Apply a theme.\n * @param theme The theme to apply.\n * @param save Save the theme.\n */\n public apply(theme: string, save: boolean): void {\n const currentTheme = this._theme;\n this._theme = theme ?? \"light\";\n\n document.body.classList.remove(`theme-${currentTheme}`);\n document.body.classList.add(`theme-${this._theme}`);\n\n EventAggregator.publish(\"theme\", this._theme);\n\n if (save) {\n this.save();\n }\n }\n\n /**\n * Get the theme.\n * @returns The theme.\n */\n public get(): string {\n return this._theme;\n }\n\n /**\n * Save theme.\n */\n public save(): void {\n const storageService = ServiceFactory.get(\"local-storage\");\n storageService.save(\"theme\", this._theme);\n }\n}\n","import { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IVertex } from \"../models/visualizer/IVertex\";\nimport { IVerticesCounts } from \"../models/visualizer/IVerticesCounts\";\nimport { VisualizerVertexOperation } from \"../models/visualizer/visualizerVertexOperation\";\nimport { ISyncStatus } from \"../models/websocket/ISyncStatus\";\nimport { IVisualizerBlockStateInfo } from \"../models/websocket/IVisualizerBlockStateInfo\";\nimport { IVisualizerTipInfo } from \"../models/websocket/IVisualizerTipInfo\";\nimport { IVisualizerVertex } from \"../models/websocket/IVisualizerVertex\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { DataHelper } from \"../utils/dataHelper\";\nimport { WebSocketService } from \"./webSocketService\";\n\n/**\n * Visualizer Service.\n */\nexport class VisualizerService {\n /**\n * The web socket service.\n */\n private readonly _webSocketService: WebSocketService;\n\n /**\n * Web socket subscriptions.\n */\n private _subscriptions: string[];\n\n /**\n * The known vertices.\n */\n private _vertices: {\n [id: string]: IVertex;\n };\n\n /**\n * The ordered vertices.\n */\n private _verticesOrder: string[];\n\n /**\n * The counts.\n */\n private readonly _counts: IVerticesCounts;\n\n /**\n * The maximum number of vertices.\n */\n private readonly _verticesLimit: number;\n\n /**\n * The vertex update callback.\n */\n private _vertexCallback?: (vertex: IVertex, operation: VisualizerVertexOperation) => void;\n\n /**\n * The counts were updated callback.\n */\n private _countsCallback?: (counts: IVerticesCounts) => void;\n\n /**\n * Create a new instance of VisualizerService.\n */\n constructor() {\n this._subscriptions = [];\n this._vertices = {};\n this._verticesOrder = [];\n this._verticesLimit = 5000;\n this._counts = {\n total: 0,\n accepted: 0,\n confirmed: 0,\n finalized: 0,\n transactions: 0,\n tips: 0\n };\n this._webSocketService = ServiceFactory.get(\"web-socket\");\n }\n\n /**\n * The callback triggered with vertex updates.\n * @param vertexCallback The vertex callback.\n * @param countsCallback The counts callback.\n */\n public subscribe(\n vertexCallback: (vertex: IVertex, operation: VisualizerVertexOperation) => void,\n countsCallback: (counts: IVerticesCounts) => void): void {\n this._subscriptions.push(\n this._webSocketService.subscribe(\n WebSocketTopic.SyncStatus,\n false,\n data => this.updateSyncStatus(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.VisualizerVertex,\n false,\n data => this.updateVertices(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.VisualizerTipInfo,\n false,\n data => this.updateTipInfo(data)\n ),\n this._webSocketService.subscribe(\n WebSocketTopic.VisualizerBlockStateInfo,\n false,\n data => this.updateBlockStateInfo(data)\n ));\n\n this._vertexCallback = vertexCallback;\n this._countsCallback = countsCallback;\n }\n\n /**\n * Unsubscribe and cleanup.\n */\n public unsubscribe(): void {\n for (const subscription of this._subscriptions) {\n this._webSocketService.unsubscribe(subscription);\n }\n this._subscriptions = [];\n this._vertices = {};\n this._verticesOrder = [];\n\n // reset counts\n this._counts.total = 0;\n this._counts.accepted = 0;\n this._counts.confirmed = 0;\n this._counts.finalized = 0;\n this._counts.transactions = 0;\n this._counts.tips = 0;\n }\n\n /**\n * Updates the sync status of the visualizer.\n * @param data The sync status data.\n */\n private updateSyncStatus(data?: ISyncStatus) {\n if (data) {\n for (const vertex of Object.values(this._vertices)) {\n if (vertex.isFinalized) {\n // already finalized\n continue;\n }\n\n if (!vertex.isAccepted && !vertex.isConfirmed) {\n // not accepted or confirmed\n continue;\n }\n\n if (vertex.slot !== undefined && vertex.slot <= data.latestFinalizedSlot) {\n vertex.isFinalized = true;\n this._counts.finalized++;\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n }\n\n /**\n * Add a new vertex.\n * @param vert The vertex to add.\n */\n private updateVertices(vert?: IVisualizerVertex): void {\n if (vert) {\n const shortVertId = vert.id.slice(0, 10);\n\n let vertex = this._vertices[shortVertId];\n\n let op: VisualizerVertexOperation = \"add\";\n\n if (!vertex) {\n if (vert.isBasicBlockSignedTransaction) {\n this._counts.transactions++;\n }\n this._verticesOrder.push(shortVertId);\n this.checkLimit();\n\n vertex = {\n fullId: vert.id,\n shortId: shortVertId,\n slot: DataHelper.computeSlotIndex(vert.id)\n };\n } else {\n op = \"update\";\n }\n\n vertex.parents = vert.parents;\n vertex.blockState = vert.blockState;\n vertex.isBasicBlockTaggedData = vert.isBasicBlockTaggedData;\n vertex.isBasicBlockSignedTransaction = vert.isBasicBlockSignedTransaction;\n vertex.isBasicBlockCandidacyAnnouncement = vert.isBasicBlockCandidacyAnnouncement;\n vertex.isValidationBlock = vert.isValidationBlock;\n if (!vertex.isTip && vert.isTip) {\n this._counts.tips++;\n } else if (vertex.isTip && !vert.isTip) {\n this._counts.tips--;\n }\n vertex.isTip = vert.isTip;\n\n this.updateVertexBlockStateInfo(vertex, vert.blockState);\n\n this._vertices[shortVertId] = vertex;\n\n this._counts.total = this._verticesOrder.length;\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, op);\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n\n /**\n * Check the number of vertices.\n */\n private checkLimit(): void {\n while (this._verticesOrder.length > this._verticesLimit) {\n const deleteId = this._verticesOrder.shift();\n\n if (deleteId) {\n const vertex = this.removeVertex(deleteId);\n\n if (vertex?.parents) {\n for (const parent of vertex.parents) {\n this.removeVertex(parent);\n }\n }\n }\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n\n /**\n * Delete a vertex.\n * @param vertexId The id of the vertex to delete.\n * @returns The deleted vertex.\n */\n private removeVertex(vertexId: string | undefined): IVertex | undefined {\n if (!vertexId) {\n return;\n }\n let vertex = this._vertices[vertexId];\n if (vertex) {\n if (vertex.isAccepted) {\n this._counts.accepted--;\n }\n if (vertex.isConfirmed) {\n this._counts.confirmed--;\n }\n if (vertex.isFinalized) {\n this._counts.finalized--;\n }\n if (vertex.isBasicBlockSignedTransaction) {\n this._counts.transactions--;\n }\n if (vertex.isTip) {\n this._counts.tips--;\n }\n\n delete this._vertices[vertexId];\n } else {\n vertex = { shortId: vertexId };\n }\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"delete\");\n }\n\n return vertex;\n }\n\n /**\n * Update the tip information.\n * @param data The tip info data.\n */\n private updateTipInfo(data?: IVisualizerTipInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n if (vertex) {\n if (!vertex.isTip && data.isTip) {\n this._counts.tips++;\n } else if (vertex.isTip && !data.isTip) {\n this._counts.tips--;\n }\n vertex.isTip = data.isTip;\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n }\n\n private updateVertexBlockStateInfo(vertex: IVertex, blockState: string): boolean {\n if (vertex) {\n let updated = false;\n switch (blockState) {\n case \"accepted\":\n if (!vertex.isAccepted) {\n this._counts.accepted++;\n updated = true;\n vertex.isAccepted = true;\n }\n break;\n case \"confirmed\":\n if (!vertex.isConfirmed) {\n this._counts.confirmed++;\n updated = true;\n vertex.isConfirmed = true;\n }\n break;\n default:\n break;\n }\n\n return updated;\n }\n\n return false;\n }\n\n /**\n * Update the solid information.\n * @param data The solid info data.\n */\n private updateBlockStateInfo(data?: IVisualizerBlockStateInfo) {\n if (data) {\n const vertex = this._vertices[data.id];\n\n if (!this.updateVertexBlockStateInfo(vertex, data.blockState)) {\n return;\n }\n\n if (this._vertexCallback) {\n this._vertexCallback(vertex, \"update\");\n }\n\n if (this._countsCallback) {\n this._countsCallback(this._counts);\n }\n }\n }\n}\n","/* eslint-disable unicorn/prefer-add-event-listener, unicorn/prefer-node-protocol*/\nimport { Converter, RandomHelper } from \"@iota/util.js\";\nimport { Buffer } from \"buffer\";\nimport { ServiceFactory } from \"../factories/serviceFactory\";\nimport { IWebSocketMessage } from \"../models/websocket/IWebSocketMessage\";\nimport { WebSocketTopic } from \"../models/websocket/webSocketTopic\";\nimport { AuthService } from \"./authService\";\n\n/**\n * Service to handle the websocket connection.\n */\nexport class WebSocketService {\n /**\n * Timer to retry failed connections.\n */\n private _reconnectTimer?: NodeJS.Timer;\n\n /**\n * The last time we received a message.\n */\n private _lastMessage: number;\n\n /**\n * The web socket connection.\n */\n private _webSocket?: WebSocket;\n\n /**\n * Subscribers to the messages.\n */\n private readonly _subscriptions: {\n [topic: number]:\n {\n requiresAuth: boolean;\n isSubscribed: boolean;\n subs: {\n subscriptionId: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n callback: (data: any) => void;\n }[];\n };\n };\n\n /**\n * The auth service.\n */\n private readonly _authService: AuthService;\n\n /**\n * Create a new instance of WebSocketService.\n */\n constructor() {\n this._authService = ServiceFactory.get(\"auth\");\n\n this._subscriptions = {};\n this._lastMessage = 0;\n }\n\n /**\n * Subscribe to a topic.\n * @param topic The topic to subscribe to.\n * @param requiresAuth Requires authentication.\n * @param callback The callback to send the data to.\n * @returns The subscription id.\n */\n public subscribe(topic: WebSocketTopic, requiresAuth: boolean, callback: (data: T) => void): string {\n if (!this._subscriptions[topic]) {\n this._subscriptions[topic] = {\n requiresAuth,\n isSubscribed: false,\n subs: []\n };\n }\n\n const subscriptionId = Converter.bytesToHex(RandomHelper.generate(32));\n\n this._subscriptions[topic].subs.push({\n subscriptionId,\n callback\n });\n\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n // If we are already connected just subscribe to the topic.\n this.subscribeTopic(topic);\n } else if (!this._webSocket) {\n // Otherwise connect the socket which will in turn subscribe to\n // all the topics with callbacks.\n this.connectSocket();\n }\n\n return subscriptionId;\n }\n\n /**\n * Unsubscribe from a topic.\n * @param subscriptionId The subscription to unsubscribe.\n */\n public unsubscribe(subscriptionId: string): void {\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n const subscriptionIdx = this._subscriptions[topic].subs.findIndex(s => s.subscriptionId === subscriptionId);\n if (subscriptionIdx >= 0) {\n this._subscriptions[topic].subs.splice(subscriptionIdx, 1);\n\n if (this._subscriptions[topic].subs.length === 0) {\n this.unsubscribeTopic(topic);\n // No more subscriptions for this topic so unsubscribe the topic.\n delete this._subscriptions[topic];\n break;\n }\n }\n }\n\n // No more subscriptions so disconnect the socket.\n if (Object.keys(this._subscriptions).length === 0) {\n this.clearTimer();\n this.disconnectSocket();\n }\n }\n\n /**\n * We resubscribe if the authentication, jwt token has been updated.\n */\n public resubscribe(): void {\n const topics = Object.keys(this._subscriptions).map(Number);\n for (const topic of topics) {\n this.unsubscribeTopic(topic);\n }\n\n // If the socket is not yet open dont subscribe again\n // when the socket open completes the subscribeTopics will\n // be called automatically\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n for (const topic of topics) {\n this.subscribeTopic(topic);\n }\n }\n }\n\n /**\n * Connect the web socket.\n */\n private connectSocket(): void {\n this.clearTimer();\n this.disconnectSocket();\n\n let uri = \"ws:\";\n\n if (window.location.protocol === \"https:\") {\n uri = \"wss:\";\n }\n uri += `//${window.location.hostname}:${window.location.port}/dashboard/ws`;\n\n this._webSocket = new WebSocket(uri);\n\n this._webSocket.onopen = () => {\n // Socket has opened so subscribe for all the registered subscription topics\n for (const topic of Object.keys(this._subscriptions).map(Number)) {\n this.subscribeTopic(topic);\n }\n };\n\n this._webSocket.onclose = () => {\n this.disconnectSocket();\n };\n\n this._webSocket.onerror = err => {\n console.error(\"Socket error\", err);\n };\n\n this._webSocket.onmessage = msg => {\n this._lastMessage = Date.now();\n this.handleMessage(msg.data as string);\n };\n\n this._lastMessage = Date.now();\n this._reconnectTimer = setInterval(() => this.reconnect(), 5000);\n }\n\n /**\n * Disconnect the web socket.\n */\n private disconnectSocket(): void {\n if (this._webSocket) {\n try {\n if (this._webSocket.readyState === WebSocket.OPEN) {\n this._webSocket.close();\n }\n } catch {}\n this._webSocket = undefined;\n }\n }\n\n /**\n * Clear the timer.\n */\n private clearTimer(): void {\n if (this._reconnectTimer) {\n clearInterval(this._reconnectTimer);\n this._reconnectTimer = undefined;\n }\n }\n\n /**\n * Subscribe to a topic.\n * @param topicId The topic to subscribe to.\n */\n private subscribeTopic(topicId: number) {\n if (this._subscriptions[topicId]) {\n const requiresAuth = this._subscriptions[topicId].requiresAuth;\n const jwt = this._authService.isLoggedIn();\n\n if (!requiresAuth || (requiresAuth && jwt)) {\n this._subscriptions[topicId].isSubscribed = true;\n\n const arrayBuf = new ArrayBuffer(2 + (jwt && requiresAuth ? jwt.length : 0));\n const view = new Uint8Array(arrayBuf);\n view[0] = 0; // register\n view[1] = topicId;\n\n if (jwt && requiresAuth) {\n view.set(Buffer.from(jwt), 2);\n }\n\n if (this._webSocket) {\n this._webSocket.send(arrayBuf);\n }\n }\n }\n }\n\n /**\n * Unsubscribe from a topic.\n * @param topicId The topic to unsubscribe from.\n */\n private unsubscribeTopic(topicId: number) {\n if (this._subscriptions[topicId]?.isSubscribed) {\n this._subscriptions[topicId].isSubscribed = false;\n\n const arrayBuf = new ArrayBuffer(2);\n const view = new Uint8Array(arrayBuf);\n view[0] = 1; // unregister\n view[1] = topicId;\n\n if (this._webSocket && this._webSocket.readyState === WebSocket.OPEN) {\n this._webSocket.send(arrayBuf);\n }\n }\n }\n\n /**\n * Handle the messages.\n * @param msg The mesage data.\n */\n private handleMessage(msg: string): void {\n const message = JSON.parse(msg) as IWebSocketMessage;\n\n if (this._subscriptions[message.type]) {\n for (const subscriber of this._subscriptions[message.type].subs) {\n subscriber.callback(message.data);\n }\n }\n }\n\n /**\n * Reconnect if we have not received messages.\n */\n private reconnect(): void {\n // Only reconnect if we have subscriptions.\n if (Object.keys(this._subscriptions)) {\n const now = Date.now();\n if (now - this._lastMessage > 10000) {\n this.connectSocket();\n }\n }\n }\n}\n","/* eslint-disable unicorn/prefer-top-level-await */\nimport React from \"react\";\nimport { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport App from \"./app/App\";\nimport { ServiceFactory } from \"./factories/serviceFactory\";\nimport \"./index.scss\";\nimport { IBrandConfiguration } from \"./models/IBrandConfiguration\";\nimport { AuthService } from \"./services/authService\";\nimport { DashboardConfigService } from \"./services/dashboardConfigService\";\nimport { EventAggregator } from \"./services/eventAggregator\";\nimport { LocalStorageService } from \"./services/localStorageService\";\nimport { MetricsService } from \"./services/metricsService\";\nimport { NodeConfigService } from \"./services/nodeConfigService\";\nimport { SessionStorageService } from \"./services/sessionStorageService\";\nimport { SettingsService } from \"./services/settingsService\";\nimport { TangleService } from \"./services/tangleService\";\nimport { ThemeService } from \"./services/themeService\";\nimport { VisualizerService } from \"./services/visualizerService\";\nimport { WebSocketService } from \"./services/webSocketService\";\nimport { BrandHelper } from \"./utils/brandHelper\";\n\ninitServices()\n .then(brandConfiguration => {\n /* eslint-disable-next-line @typescript-eslint/no-non-null-assertion */\n const container = document.querySelector(\"#root\")!;\n const root = createRoot(container);\n root.render(\n !brandConfiguration\n ? (
REACT_APP_BRAND_ID is not set
)\n : (\n \n \n \n )\n );\n })\n .catch(err => console.error(err));\n\n/**\n * Initialise the services.\n * @returns The brand configuration.\n */\nasync function initServices(): Promise {\n ServiceFactory.register(\"local-storage\", () => new LocalStorageService());\n ServiceFactory.register(\"session-storage\", () => new SessionStorageService());\n const settingsService = new SettingsService();\n ServiceFactory.register(\"settings\", () => settingsService);\n\n const authService = new AuthService();\n await authService.initialize();\n ServiceFactory.register(\"auth\", () => authService);\n\n const webSocketService = new WebSocketService();\n ServiceFactory.register(\"web-socket\", () => webSocketService);\n ServiceFactory.register(\"tangle\", () => new TangleService());\n\n const themeService = new ThemeService();\n themeService.initialize();\n ServiceFactory.register(\"theme\", () => themeService);\n\n const dashboardConfigService = new DashboardConfigService();\n await dashboardConfigService.initialize();\n ServiceFactory.register(\"dashboard-config\", () => dashboardConfigService);\n\n const nodeConfigService = new NodeConfigService();\n await nodeConfigService.initialize();\n ServiceFactory.register(\"node-config\", () => nodeConfigService);\n\n const metricsService = new MetricsService();\n ServiceFactory.register(\"metrics\", () => metricsService);\n metricsService.initialize();\n\n ServiceFactory.register(\"visualizer\", () => new VisualizerService());\n\n EventAggregator.subscribe(\"auth-state\", \"init\", async () => {\n webSocketService.resubscribe();\n });\n\n EventAggregator.subscribe(\"online\", \"init\", async o => {\n if (o) {\n await nodeConfigService.initialize();\n webSocketService.resubscribe();\n }\n });\n\n settingsService.initialize();\n\n return BrandHelper.initialize();\n}\n"],"names":["addEventListener","removeEventListener","el","eventName","listener","useCapture","Events","document","add","stdAttach","rm","stdDetach","oldIEAttach","oldIEDetach","module","exports","Error","attachEvent","detachEvent","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","i","arr","Arr","_byteLength","curByte","len","revLookup","charCodeAt","fromByteArray","uint8","length","extraBytes","parts","maxChunkLength","len2","push","encodeChunk","lookup","join","Uint8Array","Array","code","indexOf","start","end","num","output","bigInt","undefined","BASE","MAX_INT","MAX_INT_ARR","smallToArray","DEFAULT_ALPHABET","supportsNativeBigInt","BigInt","Integer","v","radix","alphabet","caseSensitive","parseBase","parseValue","BigInteger","value","sign","this","isSmall","SmallInteger","NativeBigInt","isPrecise","n","Math","floor","arrayToSmall","trim","compareAbs","createArray","x","truncate","ceil","a","b","sum","l_a","l_b","r","carry","base","addAny","addSmall","l","subtract","difference","a_l","b_l","borrow","subtractSmall","multiplyLong","product","a_i","j","multiplySmall","shiftLeft","concat","multiplyKaratsuba","y","max","slice","d","c","ac","bd","abcd","multiplySmallAndArray","square","divModSmall","lambda","q","remainder","divisor","quotient","divModAny","self","negate","abs","comparison","quotientDigit","shift","result","divisorMostSignificantDigit","divMod1","guess","xlen","highx","highy","check","part","unshift","reverse","divMod2","qSign","mod","mSign","isBasicPrime","isUnit","equals","isEven","isDivisibleBy","lesser","millerRabinTest","nPrev","prev","divide","next","modPow","prototype","Object","create","plus","subtractAny","minus","small","multiply","l1","l2","times","_multiplyBySmall","divmod","over","pow","toString","_0","_1","_2","isNegative","exp","isZero","modInv","isPositive","isOdd","compare","Infinity","compareTo","eq","notEquals","neq","greater","gt","lt","greaterOrEquals","geq","lesserOrEquals","leq","isPrime","strict","bits","bitLength","logN","log","toJSNumber","t","isProbablePrime","iterations","rng","randBetween","lastT","lastR","zero","newT","one","newR","powersOfTwo","powers2Length","highestPower2","shift_isSmall","bitwise","fn","xSign","ySign","xRem","not","yRem","xDigit","yDigit","xDivMod","yDivMod","String","shiftRight","remQuo","and","or","xor","LOBMASK_I","roughLOB","integerLogarithm","p","e","min","gcd","text","toLowerCase","absBase","alphabetValues","digits","parseBaseFromArray","val","toBase","apply","map","valueOf","neg","Number","out","left","digit","toBaseString","stringify","parseStringValue","split","decimalPlace","test","parseNumberValue","toArray","str","toJSON","parseInt","minusOne","lcm","isInstance","usedRNG","random","low","range","restricted","top","fromArray","hasOwnProperty","define","base64","require","ieee754","customInspectSymbol","Symbol","Buffer","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","arg","encodingOrOffset","TypeError","allocUnsafe","from","string","encoding","isEncoding","actual","write","fromString","ArrayBuffer","isView","arrayView","copy","fromArrayBuffer","buffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","obj","isBuffer","checked","numberIsNaN","type","isArray","data","fromObject","toPrimitive","assertSize","size","array","mustMatch","arguments","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","call","lastIndexOf","indexSize","arrLength","valLength","read","readUInt16BE","foundIndex","found","hexWrite","offset","remaining","strLen","parsed","substr","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","res","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","fromCharCode","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","console","error","defineProperty","enumerable","get","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","list","pos","set","swap16","swap32","swap64","toLocaleString","inspect","replace","target","thisStart","thisEnd","thisCopy","targetCopy","includes","isFinite","_arr","ret","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","first","last","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","errors","E","sym","getMessage","Base","writable","configurable","name","stack","message","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_INVALID_ARG_TYPE","ERR_BUFFER_OUT_OF_BOUNDS","input","msg","received","isInteger","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","constructor","table","i16","BufferBigIntNotDefined","hasOwn","classNames","classes","argType","inner","key","default","x1","y1","x2","y2","x3","y3","x4","y4","a1","a2","b1","b2","c1","c2","r1","r2","r3","r4","denom","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","caller","callee","arity","MEMO_STATICS","TYPE_STATICS","getStatics","component","isMemo","ForwardRef","render","Memo","getOwnPropertyNames","getOwnPropertySymbols","getOwnPropertyDescriptor","getPrototypeOf","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","keys","targetStatics","sourceStatics","descriptor","greek","mo","w","h","s","ms","decimal","ARABIC_DIGITS","LANGUAGES","af","ar","getArabicForm","delimiter","_formatCount","count","replacements","assign","characters","character","has","bg","getSlavicForm","bn","ca","cs","getCzechOrSlovakForm","cy","da","de","en","eo","es","et","eu","fa","fi","fo","fr","gr","he","hr","mod10","hu","id","is","it","ja","km","kn","ko","ku","getLithuanianForm","lv","getLatvianForm","mk","mr","nl","no","pl","getPolishForm","pt","ro","ru","sq","sr","ta","te","uk","ur","sk","sl","sv","sw","_numberFirst","tr","th","vi","zh_CN","zh_TW","humanizer","passedOptions","humanizerOptions","options","piece","unitName","unitMS","unitCount","dictionary","languagesFromOptions","language","fallbacks","languageToTry","languages","getDictionary","pieces","unitMeasures","expValue","maxDecimalPoints","unitCountFloat","parseFloat","toFixed","ratioToLargerUnit","previousPiece","firstOccupiedUnitIndex","round","largest","conjunction","serialComma","doHumanization","spacer","humanizeDuration","countStr","word","dictionaryValue","destination","source","prop","getSupportedLanguages","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","isNaN","LN2","hookCallback","some","hooks","setHookCallback","callback","isObject","hasOwnProp","isObjectEmpty","k","isUndefined","isNumber","isDate","Date","arrLen","extend","createUTC","format","locale","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","_isValid","flags","parsedParts","isNowValid","_d","getTime","invalidWeekday","_strict","bigHour","isFrozen","createInvalid","fun","momentProperties","updateInProgress","copyConfig","to","momentPropertiesLen","_isAMomentObject","_i","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","config","updateOffset","isMoment","warn","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","args","argLen","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","RegExp","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","calendar","mom","now","_calendar","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","localeData","removeFormattingTokens","match","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","longDateFormat","lastIndex","defaultLongDateFormat","LTS","LT","L","LL","LLL","LLLL","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","future","past","ss","mm","hh","dd","ww","M","MM","yy","relativeTime","withoutSuffix","isFuture","_relativeTime","pastFuture","diff","aliases","addUnitAlias","unit","shorthand","lowerCase","normalizeUnits","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","addUnitPriority","priority","getPrioritizedUnits","unitsObj","u","sort","isLeapYear","year","absFloor","toInt","argumentForCoercion","coercedNumber","makeGetSet","keepTime","set$1","month","date","daysInMonth","stringGet","stringSet","prioritized","prioritizedLen","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","matched","p1","p2","p3","p4","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","_a","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","modMonth","o","monthsShort","months","monthsShortRegex","monthsRegex","monthsParse","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","monthName","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setMonth","dayOfMonth","getSetMonth","getDaysInMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","daysInYear","parseTwoDigitYear","getSetYear","getIsLeapYear","createDate","getFullYear","setFullYear","createUTCDate","UTC","getUTCFullYear","setUTCFullYear","firstWeekOffset","dow","doy","fwd","getUTCDay","dayOfYearFromWeeks","week","weekday","resYear","resDayOfYear","dayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMin","weekdaysShort","weekdays","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","day","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getDay","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","hours","kFormat","lowercase","minutes","matchMeridiem","_meridiemParse","localeIsPM","charAt","seconds","kInput","_isPm","isPM","_meridiem","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","dayOfMonthOrdinalParse","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","loadLocale","isLocaleNameSane","oldLocale","_abbr","aliasedRequire","getSetGlobalLocale","values","getLocale","defineLocale","abbr","parentLocale","forEach","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","dateFormat","timeFormat","tzFormat","exec","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","setUTCMinutes","getUTCMinutes","configFromString","createFromInputFallback","defaults","currentDateArray","nowValue","_useUTC","getUTCMonth","getUTCDate","getMonth","getDate","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","weekYear","temp","weekdayOverflow","curWeek","GG","W","createLocal","gg","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","hour","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","minute","second","millisecond","createFromConfig","prepareConfig","preparse","configFromInput","isUTC","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","quarter","weeks","isoWeek","days","milliseconds","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","separator","utcOffset","offsetFromString","chunkOffset","matcher","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","isAfter","isBefore","createAdder","direction","period","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","filter","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","toISOString","keepOffset","toDate","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","localStartOfDate","utcStartOfDate","startOfDate","isoWeekday","unix","toObject","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","isoWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","createUnix","createInZone","parseZone","preParsePostFormat","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","dates","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","listWeekdaysImpl","localeSorted","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","firstDayOfWeek","langData","mathAbs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","valueOf$1","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","clone$1","get$2","makeGetter","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","argWithSuffix","argThresholds","withSuffix","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","factory","degree","betweenness","closeness","eccentricity","graph","oriented","currentNode","Q","S","pred","dist","sigma","delta","centrality","forEachNode","node","singleSourceShortestPath","accumulate","setDeltaToZero","pop","coeff","predcessors","idx","nodeId","forEachLinkedNode","toId","otherNode","processNode","distances","reachableNodesTotal","totalDistance","reduce","inDegreeCalculator","links","outDegreeCalculator","fromId","inoutDegreeCalculator","kind","getNodeDegree","getLinks","maxDist","subject","reservedWords","validateSubject","eventsStorage","registeredEvents","on","ctx","handlers","off","callbacks","splice","fire","fireArguments","callbackInfo","createEventsStorage","augment","settings","physicsSettings","physicsSimulator","createSimulator","nodeMass","nodeBodies","springs","bodiesCount","springTransform","noop","initBody","forEachLink","initLink","onGraphChanged","wasStable","api","step","lastMove","isStable","isStableNow","getNodePosition","getInitializedBody","setNodePosition","body","setPosition","invalidateBBox","getLinkPosition","linkId","spring","getGraphRect","getBBox","forEachBody","cb","bodyId","pinNode","isPinned","isNodePinned","dispose","getBody","getSpring","link","hasLink","simulator","eventify","changes","change","changeType","releaseNode","releaseLink","getNodesCount","getNode","position","neighbors","maxNeighbors","otherBody","getNeighborBodies","getBestNewBodyPosition","addBodyAt","updateBodyMass","isNodeOriginallyPinned","removeBody","fromBody","toBody","addSpring","removeSpring","mass","jsonGraph","nodeTransform","linkTransform","stored","JSON","parse","createGraph","nodes","parsedNode","addNode","addLink","ladder","complete","g","completeBipartite","balancedBinTree","level","root","right","path","circularLadder","grid","grid3","z","noLinks","wattsStrogatz","seed","neighborsSize","nextDouble","newTo","needsRewire","removeLink","cliqueCircle","cliqueCount","cliqueSize","appendClique","inputSeed","Generator","randomIterator","customRandom","localRandom","shuffle","maxValue","uniform","gaussian","sqrt","multigraph","uniqueLinkId","multiEdges","nodesCount","suspendEvents","objectKeysIterator","forInIterator","createLink","makeLinkId","isMultiEdge","getLink","Link","recordLinkChange","recordNodeChange","enterModification","exitModification","graphPart","fromNode","toNode","addLinkToNode","removeNode","getLinksCount","forEachOrientedLink","linkedNodeId","forEachNonOrientedLink","beginUpdate","endUpdate","clear","hasNode","realOn","enterModificationReal","exitModificationReal","recordLinkChangeReal","recordNodeChangeReal","monitorSubscribers","Node","prevLinks","indexOfElementInArray","fromNodeId","toNodeId","element","merge","targetHasIt","optionsValueType","Body","Vector2d","prevPos","force","velocity","Body3d","Vector3d","reset","Spring","expose","createQuadTree","springLength","springCoeff","gravity","theta","dragCoeff","timeStep","createBounds","createDragForce","createSpringForce","integrate","integrator","createBody","bodies","quadTree","bounds","springForce","dragForce","bboxNeedsUpdate","publicApi","insertBodies","updateBodyForce","update","accumulateForces","movement","addBody","body1","body2","springWeight","springCoefficient","getTotalMovement","getBestNewPosition","box","boundingBox","MAX_VALUE","MIN_VALUE","graphRect","baseX","baseY","physics","dx","tx","dy","ty","vx","vy","weight","getChild","quad0","quad1","quad2","quad3","setChild","child","InsertStack","isSamePosition","updateQueue","insertStack","nodesCache","currentInCache","newNode","bottom","insert","getRoot","sourceBody","queue","fx","fy","queueLength","shiftIdx","pushIdx","differentBody","massX","massY","newOptions","newBody","isEmpty","stackItem","oldBody","retriesCount","quadIdx","popIdx","InsertStackElement","point1","point2","randomFunc","customNodeTransform","customLinkTransform","isarray","pathToRegexp","compile","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","escaped","capture","group","modifier","asterisk","partial","repeat","optional","pattern","escapeGroup","escapeString","encodeURIComponentPretty","encodeURI","opts","encode","pretty","encodeURIComponent","segment","attachKeys","re","sensitive","route","endsWithDelimiter","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","getShim","isRequired","ReactPropTypes","bigint","bool","object","symbol","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","aa","Set","ea","ha","ia","window","createElement","ka","la","ma","f","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","ra","sa","pa","qa","oa","removeAttribute","setAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","Ma","Na","Oa","prepareStackTrace","Reflect","construct","Pa","tag","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","setProperty","substring","tb","menuitem","area","br","col","embed","img","keygen","meta","param","track","wbr","ub","vb","wb","xb","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","sibling","current","Yb","$b","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","Zc","$c","ad","cd","ReactCurrentBatchConfig","ed","transition","fd","gd","hd","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","ee","fe","ge","ie","le","color","email","password","search","tel","url","me","ne","oe","event","listeners","pe","qe","se","ue","ve","we","xe","ye","ze","oninput","Ae","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","selectionStart","selectionEnd","defaultView","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","scrollLeft","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","instance","D","of","pf","qf","rf","sf","bind","passive","J","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","G","Vf","H","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","deletions","Cg","pendingProps","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","context","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","ch","eventTime","lane","payload","dh","K","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","uh","vh","wh","xh","yh","implementation","zh","Ah","done","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","N","O","P","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","gi","ji","ki","getSnapshot","li","mi","R","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","WeakMap","Oi","Pi","Qi","Ri","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","createElementNS","autoFocus","createTextNode","T","Hj","Ij","Jj","Kj","U","Lj","WeakSet","V","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","X","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","nk","ok","pk","Y","Z","qk","rk","tk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","dl","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","ol","ql","rl","unmount","unstable_scheduleHydration","querySelectorAll","form","tl","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","only","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","svg","compileTemplate","domEvents","svgns","xlinkns","attrBag","svgElement","compiledTempalte","simplesvg","attr","append","dataSource","content","removeAttributeNS","getAttributeNS","attributes","parser","svgText","namespaces","tagLength","addNamespaces","parseFromString","domNode","allBindings","extractAllBindings","changeModel","BINDING_EXPR","hasChildNodes","domChildren","childNodes","modelNameMatch","modelPropertyName","propertyBindings","textSetter","bindTextContent","attrs","bindDomAttribute","domAttribute","attrName","localName","attributeSetter","fail","DOMParser","createDomparser","betweennessCentrality","toVivaGraphCentralityFormat","degreeCentrality","density","directed","graphics","nodeEvents","bindDragNDrop","events","nodeUI","getNodeUI","dragndrop","onStart","onDrag","onStop","release","drag","scroll","prevSelectStart","prevDragStart","dragObject","startX","startY","touchInProgress","pinchZoomLength","move","handleDisabledEvent","handleMouseMove","handleMouseDown","documentEvents","handleMouseUp","onselectstart","ondragstart","handleMouseWheel","mousePos","posx","posy","getMousePos","elementOffset","findElementPosition","relMousePos","updateScrollEvents","scrollCallback","browserInfo","browser","getPinchZoomLength","finger1","finger2","handleTouchMove","touch","currentPinchLength","handleTouchEnd","handleTouchStart","handleSignleFingerTouch","onScroll","inputEvents","createInputEvents","draggedNode","internalHandlers","mouseDown","mouseCapture","mouseUp","releaseMouseCapture","mouseMove","userSettings","maxX","maxY","rand","Rect","layoutLinks","placeNodeCallback","layoutNodes","ensureNodeInitialized","updateGraphRect","updateNodePositions","ensureLinkInitialized","run","iterationsCount","placeNode","newPlaceNodeCallbackOrNode","stop","backwardCompatible","userAgent","nullEvents","handler","createDocumentEvents","curleft","curtop","offsetParent","offsetLeft","offsetTop","container","clientWidth","clientHeight","intersect","scope","lastTime","vendors","global","requestAnimationFrame","vendorPrefix","cancelAnimationFrame","currTime","timeToCall","intervalId","startTimer","stopTimer","restart","createTimer","inputManager","animationTimer","containerDrag","layout","interactive","rendererInitialized","updateCenterRequired","userInteraction","isPaused","transform","offsetX","offsetY","scale","publicEvents","forceDirected","svgGraphics","renderLinks","prerender","domInputManager","prepareSettings","init","createNodeUi","createLinkUi","updateCenter","windowEvents","onWindowResized","releaseContainerDragManager","isInteractive","translateRel","renderGraph","scaleOffset","scrollPoint","listenNodeEvents","releaseGraphEvents","listenToEvents","timer","onRenderFrame","renderIterations","resetScale","pause","resume","rerender","zoomOut","zoomIn","getTransform","moveTo","graphCenterChanged","getGraphics","getLayout","removeLinkUi","releaseNodeEvents","removeNodeUi","interactionName","beginRender","renderNodes","endRender","resetStable","containerSize","getDimension","cx","nodePosition","linkPosition","wasPinned","oldPos","processNodeChange","processLinkChange","scaleFactor","svgContainer","svgRoot","initCallback","actualScale","allNodes","allLinks","nodeBuilder","nodePositionCallback","linkBuilder","linkPositionCallback","linkUI","fromPos","toPos","fireRescaled","cachedPos","cachedFromPos","cachedToPos","updateTransform","createSvgRoot","getLinkUI","builderCallback","newPlaceCallback","placeLink","newPlaceLinkCallback","createSVGPoint","getCTM","origin","matrixTransform","inverse","createSVGMatrix","translate","childElementCount","getGraphicsRoot","callbackWhenReady","getSvgRoot","enableBlending","preserveDrawingBuffer","clearColor","clearColorValue","graphicsRoot","userPlaceNodeCallback","userPlaceLinkCallback","linksCount","linkProgram","webglLinkProgram","nodeProgram","webglNodeProgram","nodeUIBuilder","webglSquare","linkUIBuilder","webglLine","updateTransformUniform","resetScaleInternal","updateSize","offsetWidth","offsetHeight","viewport","webglInputManager","bringLinkToFront","srcLinkId","frontLinkId","getFrontLinkId","bringToFront","boundPosition","uiid","createNode","contextParameters","getContext","alert","blendFunc","SRC_ALPHA","ONE_MINUS_SRC_ALPHA","enable","BLEND","COLOR_BUFFER_BIT","load","isSupported","linkIdToRemove","lastLinkUI","nodeIdToRemove","lastNodeUI","replaceProperties","omitLinksRendering","setNodeProgram","newProgram","setLinkProgram","transformClientToGraphCoordinates","transformGraphToClientCoordinates","getNodeAtClientPos","clientPos","preciseCheck","parsedColor","canvas","isDirty","copyArrayPart","elementsCount","swapArrayPart","createProgram","vertexShaderSrc","fragmentShaderSrc","program","vs","createShader","VERTEX_SHADER","fs","FRAGMENT_SHADER","attachShader","getProgramParameter","LINK_STATUS","getShaderInfoLog","extendArray","itemsInBuffer","elementsPerItem","extendedArray","Float32Array","getLocations","uniformOrAttributeNames","foundLocations","getAttribLocation","getUniformLocation","shaderText","shader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","Texture","tilesPerTexture","dirtyTimeoutId","tilesPerRow","tileSize","lastLoadedIdx","loadedImages","skipedDirty","textures","trackedUrls","clearDirty","remove","imgUrl","coordinates","tileToRemove","getTileCoordinates","markDirty","getTextures","getCoordinates","Image","imgId","crossOrigin","onload","tileNumber","tilePosition","textureNumber","texture","createTexture","currentTexture","drawImage","row","drawAt","absolutePosition","localTileNumber","markDirtyNow","fromCanvas","toCtx","_texture","WebglAtlas","glUtils","atlas","utils","locations","sizeDirty","ATTRIBUTES_PER_PRIMITIVE","nodesFS","nodesVS","glContext","useProgram","uniform1f","enableVertexAttribArray","vertexPos","customAttributes","replacedNode","newTransform","bindBuffer","ARRAY_BUFFER","bufferData","DYNAMIC_DRAW","uniformMatrix4fv","uniform2f","screenSize","vertexAttribPointer","FLOAT","BYTES_PER_ELEMENT","nativeObject","refreshTexture","ensureAtlasTextureUpdated","drawArrays","TRIANGLES","deleteTexture","activeTexture","bindTexture","TEXTURE_2D","texImage2D","RGBA","UNSIGNED_BYTE","texParameteri","TEXTURE_MAG_FILTER","LINEAR","TEXTURE_MIN_FILTER","LINEAR_MIPMAP_NEAREST","generateMipmap","uniform1i","webglGraphics","webglInputEvents","boundRect","mouseCapturedNode","mouseEnterCallback","mouseLeaveCallback","mouseDownCallback","mouseUpCallback","mouseMoveCallback","clickCallback","dblClickCallback","lastFound","lastUpdate","lastClickTime","invoke","updateBoundRect","getBoundingClientRect","clickTime","nodeAtClientPos","sameNode","startListen","mouseEnter","mouseLeave","click","dblClick","half","callbacksChain","parseColor","BYTES_PER_LINK","Uint32Array","linksFS","linksVS","storage","positions","colors","linkUi","extendedStorage","extendedPositions","extendedColors","ensureEnoughStorage","LINES","BYTES_PER_NODE","POINTS","Viva","lazyExtend","Graph","serializer","loadFromJSON","storeToJSON","operations","geom","intersectRect","webgl","generator","Input","Utils","Layout","constant","View","webglAtlas","webglImageNodeProgram","webglImage","_webglUtil","renderer","cssGraphics","svgNodeFactory","community","BrowserInfo","webpackAsyncContext","req","__webpack_require__","ids","webpackContext","webpackContextResolve","ReferenceError","__esModule","Constructor","_defineProperties","protoProps","staticProps","isNativeReflectConstruct","possibleConstructorReturn","Derived","hasNativeReflectConstruct","Super","NewTarget","_getPrototypeOf","__proto__","subClass","superClass","sham","Proxy","Boolean","_typeof","assertThisInitialized","_setPrototypeOf","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","leafPrototypes","getProto","ns","def","definition","chunkId","all","promises","miniCssF","globalThis","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","timeout","nc","onScriptComplete","onerror","doneFns","head","toStringTag","nmd","paths","installedChunks","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","_regeneratorRuntime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Context","_invoke","method","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","async","iter","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","finish","thrown","delegateYield","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","_inheritsLoose","_extends","isAbsolute","pathname","spliceOne","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueEqual","every","aValue","bValue","invariant","condition","addLeadingSlash","stripLeadingSlash","stripBasename","hasBasename","stripTrailingSlash","createPath","hash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","resolvePathname","createTransitionManager","prompt","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","PopStateEvent","HashChangeEvent","getHistoryState","history","createBrowserHistory","globalHistory","canUseHistory","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","basename","getDOMLocation","historyState","_ref","_window$location","createKey","transitionManager","nextState","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","unlisten","HashChangeEvent$1","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","querySelector","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","nextIndex","nextEntries","canGo","MAX_SIGNED_31_BIT_INT","commonjsGlobal","createEventEmitter","newValue","changedBits","React","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","_Component","_this","emitter","_proto","nextProps","oldValue","_Component2","_this2","onUpdate","observedBits","_proto2","_objectWithoutPropertiesLoose","excluded","sourceKeys","createNamedContext","historyContext","Router","_isMounted","_pendingLocation","staticContext","computeRootMatch","params","isExact","RouterContext","HistoryContext","Lifecycle","onMount","prevProps","onUnmount","cacheCount","generatePath","compilePath","Redirect","computedMatch","matchPath","cacheKey","pathCache","regexp","Route","isEmptyChildren","createURL","staticHandler","methodName","Switch","withRouter","wrappedComponentRef","remainingProps","WrappedComponent","hoistStatics","BrowserRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","LinkAnchor","forwardedRef","innerRef","navigate","rest","ex","isModifiedEvent","isDuplicateNavigation","ariaCurrent","activeClassName","activeStyle","classNameProp","className","isActiveProp","locationProp","styleProp","escapedPath","classnames","joinClassnames","_defineProperty","ownKeys","enumerableOnly","symbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_superPropBase","_get","receiver","desc","_inherits","_isNativeReflectConstruct","_possibleConstructorReturn","_createSuper","_path","_excluded","_objectWithoutProperties","sourceSymbolKeys","propertyIsEnumerable","SvgHome","title","titleId","viewBox","xmlns","_path2","_path3","_path4","SvgMoon","SvgPadlockUnlocked","SvgPadlock","_path5","_path6","_path7","_path8","_path9","SvgPeers","fillRule","clipRule","SvgSun","WebSocketTopic","SvgVisualizer","ServiceFactory","instanceCallback","_services","_instances","EventAggregator","subscriberId","_subscriptions","BrandHelper","_brandId","_brandConfiguration","theme","logo","banner","process","AsyncComponent","Breakpoint","_resize","resize","isVisible","calculateVisible","windowSize","innerWidth","aboveBelow","SIZE_BREAKPOINTS","FormatHelper","decimalPlaces","valueInMs","human","timeMoment","moment","formatted","postDate","_circle","_circle2","SvgHealthBad","SvgHealthGood","HealthIndicator","healthy","label","MicroGraph","_graphWidth","_graphHeight","graphWidth","graphHeight","calculateGraph","graphPoints","stroke","circle","graphPointCount","lastItems","circleX","circleY","lastY","xIncrement","Header","_authService","_metricsService","_nodeInfoExtendedSubscription","_publicNodeStatusSubscription","_databaseSizeMetricsSubscription","_gossipMetricsSubscription","isNetworkHealthy","isNodeHealthy","bps","bpsValues","memorySizeFormatted","memorySize","dbSizeTotalFormatted","dbSizeTotal","isLoggedIn","online","subscribe","PublicNodeStatus","NodeInfoExtended","iSize","memoryUsage","allData","nonNull","DatabaseSizeMetric","databaseSizes","dbSizeTotalFlattened","flat","GossipMetrics","new","bpsFormatted","unsubscribe","NavMenu","_themeService","logoSrc","isOpen","getLogoNavigation","NavPanel","fullWidth","middle","hidden","startsWith","icon","function","SvgBannerCurve","xmlnsXlink","isolation","SvgConfirmation","SvgDbIcon","strokeLinecap","strokeLinejoin","SvgMemory","SvgMilestone","SvgPruning","SvgUptime","_arrayLikeToArray","_unsupportedIterableToArray","minLen","_toConsumableArray","Bech32","humanReadablePart","encode5BitArray","to5Bit","data5Bit","checksum","createChecksum","SEPARATOR","CHARSET","bech","decodeTo5BitArray","from5Bit","separatorPos","verifyChecksum","convertBits","fiveBit","bech32Text","expanded","humanReadablePartExpand","polymod","chk","GENERATOR","fromBits","toBits","padding","maxV","Blake2b","outlen","_v","_m","compress","BLAKE2B_IV32","keylen","b2bGet32","b2bG","SIGMA82","o0","o1","b0","ix","iy","x0","y0","add64AA","add64AC","xor0","xor1","b2b","SIZE_256","final","SIZE_512","SIGMA8","Curl","rounds","NUMBER_OF_ROUNDS","_state","Int8Array","STATE_LENGTH","_rounds","HASH_LENGTH","trits","curlState","stateCopy","lastVal","nextVal","TRUTH_TABLE","Sha1","blocks","h0","h1","h2","h3","h4","hBytes","lastByteIndex","finalized","hashed","_SHIFT","trunc","finalize","_EXTRA","Sha256","_blocks","SIZE_224","_h0","_h1","_h2","_h3","_h4","_h5","_h6","_h7","_bits","_block","_start","_bytes","_hBytes","_lastByteIndex","_finalized","_hashed","_first","SHIFT","h5","h6","h7","EXTRA","s0","s1","maj","t1","Sha512","SIZE_384","_h0h","_h0l","_h1h","_h1l","_h2h","_h2l","_h3h","_h3l","_h4h","_h4l","_h5h","_h5l","_h6h","_h6l","_h7h","_h7l","h0h","h0l","h1h","h1l","h2h","h2l","h3h","h3l","h4h","h4l","h5h","h5l","h6h","h6l","h7h","h7l","s0h","s0l","s1h","s1l","c3","c4","abh","abl","dah","dal","cdh","cdl","bch","bcl","majh","majl","t1h","t1l","t2h","t2l","chh","chl","RandomHelper","randomPolyfill","randomBytes","crypto","getRandomValues","Base32","base32","_ALPHABET","Base58","base58","zeroes","b256","_ALPHABET_REVERSE","b58","Base64","getLengths","calcByteLength","_REVERSE_LOOKUP","_LOOKUP","tripletToBase64","BigIntHelper","v0","v1","BIG_32","BIG_32_MASK","read8","generate","Converter","startIndex","utf8","charcode","hex","buildHexLookups","ENCODE_LOOKUP","sizeof","DECODE_LOOKUP","bytesToHex","bytesToUtf8","hexToBytes","padStart","binary","decode","_storage","WriteStream","CHUNK_SIZE","_writeIndex","writeIndex","expand","additional","newArr","HmacSha256","_sha256","_oKeyPad","iKeyPad","innerHash","finalSha256","HmacSha512","_sha512","finalSha512","Pbkdf2","salt","deriveKey","pass","sum256","macLength","sumFunc","DK","block1","destPos","english","Bip39","wordlistData","joiningChar","_wordlist","_joiningChar","entropyToMnemonic","entropy","setWordList","bin","entropyChecksumBits","mnemonic","wordIndexBits","wordIndex","mnemonicBytes","normalize","sha512","words","dividerIndex","entropyBits","checksumBits","newChecksum","ArrayHelper","BIG_1_SHIFTL_20","BIG_1_SHIFTL_24","BIG_1_SHIFTL_25","BIG_ARR","BIG_38","BIG_666643","BIG_470296","BIG_654183","BIG_997805","BIG_136657","BIG_683901","BIG_2097151","BIG_8388607","FieldElement","Int32Array","FIELD_ELEMENT_SIZE","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","f12","f32","f52","f72","f92","g0","g1","g2","g3","g4","g5","g6","g7","g8","g9","g119","g219","g319","g419","g519","g619","g719","g819","g919","h8","h9","combine","c0","c5","c6","c7","c8","c9","internalSquare","f02","f22","f42","f62","f538","f619","f738","f819","f938","toBytes","t0","t2","t3","CachedGroupElement","yPlusX","yMinusX","T2d","CompletedGroupElement","xy2d","PreComputedGroupElement","cMove","minusT","bNegative","negative","bAbs","CONST_BASE","equal","CONST_D","CONST_D2","CONST_SQRT_M1","CONST_ORDER","CONST_BI","ProjectiveGroupElement","square2","recip","invert","aSlide","bSlide","ExtendedGroupElement","A2","slide","toCached","double","toExtended","mixedAdd","mixedSub","toProjective","cachedGroupElement","cacheGroupElement","projectiveGroupElement","v3","vxx","fromBytes","pow22523","tmpX","tmp2","isNonZero","selectPoint","xBytes","yBytes","zBytes","scalarReduce","s2","s3","s4","s5","s6","s7","s8","s9","s10","s11","s12","s13","s14","s15","s16","s17","s18","s19","s20","s21","s22","s23","Ed25519","privateKey","privateKeyFromSeed","SEED_SIZE","publicKey","publicKeyFromPrivateKey","scalarMultBase","publicKeyBytes","PRIVATE_KEY_SIZE","digest1","expandedSecretKey","messageDigest","messageDigestReduced","encodedR","hramDigest","hramDigestReduced","a0","a3","a4","a5","a6","a7","a8","a9","a10","a11","b3","b4","b5","b6","b7","b8","b9","b10","b11","c10","c11","scalarMulAdd","signature","SIGNATURE_SIZE","sig","PUBLIC_KEY_SIZE","hReduced","scalar","scalarMinimal","doubleScalarMultVartime","checkR","_graphElement","dataEqual","series","caption","setElement","textAnchor","axis","baseVal","seriesMaxLength","actualSeriesValues","maxItems","yScale","barWidth","axisSpacing","axisLabelWidth","timeInterval","endTime","numTimeEntries","timeMarkers","timePerInterval","dt","marginLeft","getHours","getMinutes","getSeconds","calculatePath","scaledVal","pathSegments","tooltipContent","tooltip","onMouseEnter","visibility","onMouseLeave","SYNC_STATUS_CAPTION","InfoPanel","latestFinalizedSlot","latestCommitmentSlot","slots","backgroundStyle","SvgEyeClosed","SvgEye","DataHelper","numberString","chunks","charsLength","separated","DataView","getUint32","peers","connected","localeCompare","PeersSummaryPanel","_settingsService","_peerMetricsSubscription","_syncStatusSubscription","blindMode","getBlindMode","PeerMetrics","handleData","toggleBlindMode","address","sortedPeers","sortPeers","multiAddresses","setBlindMode","Home","_networkMetricsSubscription","_databaseSizeSubscription","_networkId","nodeConfigService","getNetworkId","displayVersion","displayLatestVersion","pruningEpoch","rbps","referencedRate","memory","dbSizePermanentFormatted","dbSizePrunableFormatted","dbSizeTxRetainerFormatted","uptime","lastReceivedBpsTime","bpsIncoming","bpsOutgoing","bannerSrc","getBanner","nodeAlias","getConfiguration","checkVersion","latestVersion","SyncStatus","NetworkMetrics","blocksPerSecond","confirmedBlocksPerSecond","confirmationRate","incoming","outgoing","dbSizeMetric","permanent","prunable","txRetainer","currentVersion","compareVersions","partsFirst","partsSecond","firstAlphabet","secondAlphabet","firstIndex","codePointAt","secondIndex","Spinner","compact","Login","user","isBusy","redirect","autoComplete","onChange","onKeyDown","login","success","_createForOfIteratorHelper","allowArrayLike","_e","normalCompletion","didErr","_e2","SvgChevronLeft","ClipboardHelper","textArea","fontSize","border","margin","yPosition","pageYOffset","select","execCommand","SvgCopy","BlockButton","active","buttonType","activate","labelPosition","Peer","isConnected","receivedPacketsDiff","sentPacketsDiff","relation","lastUpdateTime","gossipMetrics","receivedPacketsTotal","sentPacketsTotal","allDataPeers","peer","find","packetsReceived","packetsSent","SvgChevronRight","Dialog","actions","Peers","dialogPeerMultiAddress","dialogPeerAlias","finalPeerIds","dialogType","dialogIsEdit","dialogStatus","dialogBusy","dialogPeerIdOriginal","peerConfigure","peerDelete","placeholder","tangleService","peerAdd","SvgClose","SvgPause","SvgPlay","Visualizer","_graph","_renderer","_graphics","_vizualizerService","_dashboardConfigService","_tangleService","_enteredVertexId","tips","accepted","confirmed","transactions","vertex","op","updateVertex","deleteVertex","counts","styleAllLinks","clearRect","setupGraph","toggleActivity","vertexState","blockStateTitle","payloadTitle","selectNode","fullId","calculateBlockLink","rel","header","issuerId","highestSupportedVersion","protocolParametersHash","graphElement","stableThreshold","calculateSize","STATE_COLOR_MAP","calculateVertexState","THEME_COLOR_LINKS","open","connectedLinkStyle","shortId","updateNodeUI","parents","added","parent","isTip","isFinalized","isValidationBlock","isBasicBlockSignedTransaction","isConfirmed","isAccepted","isSelected","startNode","nodeCallback","linkCallback","seenNodes","pointer","linkNode","BLOCK_STATE_TITLE_MAP","calculateBlockState","explorerURL","getExplorerURL","vertexId","highlight","dfsIterator","COLOR_LINK_CHILDREN","COLOR_LINK_PARENTS","unknown","transaction","validation","tip","dark","light","App","_storageService","_alias","_latestCommitmentSlot","_latestFinalizedSlot","_lastStatus","_statusTimer","_tokenExpiryTimer","updateTitle","validateTokenPeriodically","publish","setInterval","clearInterval","clearTokenExpiryInterval","sections","logout","endSections","jwt","expiryTimestamp","getTokenExpiry","expiryDate","refreshTokenDate","initialize","decodedToken","atob","FetchHelper","baseUrl","headers","controller","AbortController","timerId","abort","fetch","signal","status","json","statusText","urlParams","AuthService","_jwt","_csrf","cookie","csrf","storageService","protocol","host","response","save","Authorization","DashboardConfigService","_explorerURL","getExplorerURLBackend","buildAuthHeaders","explorerUrl","LocalStorageService","localStorage","getItem","setItem","removeItem","rootKey","keysToRemove","MetricsService","_webSocketService","_webSocketSubscriptions","_cached","topics","topic","isPublic","triggerCallbacks","singleCallback","multipleCallback","subscriptionId","subscriptionIdx","findIndex","subscriber","NodeConfigService","setNetworkId","networkName","networkId","SessionStorageService","sessionStorage","SettingsService","_blindMode","_construct","Parent","Class","_wrapNativeSuper","_cache","Wrapper","ClientError","httpStatus","SingleNodeClient","endpoint","_endpoint","_basePath","_coreApiPath","_managementApiPath","_timeout","_userName","_password","_headers","basePath","userName","authorization","fetchJson","blockId","multiAddress","peerId","requestData","fetchWithTimeout","responseData","errorMessage","errorCode","finalHeaders","userPass","queryParams","TangleService","_nodeInfo","client","buildClient","peerAddress","peerAlias","ThemeService","_theme","currentTheme","classList","VisualizerService","_vertices","_verticesOrder","_counts","_verticesLimit","_vertexCallback","_countsCallback","vertexCallback","countsCallback","updateSyncStatus","VisualizerVertex","updateVertices","VisualizerTipInfo","updateTipInfo","VisualizerBlockStateInfo","updateBlockStateInfo","subscription","slot","vert","shortVertId","checkLimit","computeSlotIndex","blockState","isBasicBlockTaggedData","isBasicBlockCandidacyAnnouncement","updateVertexBlockStateInfo","deleteId","removeVertex","updated","WebSocketService","_reconnectTimer","_lastMessage","_webSocket","requiresAuth","isSubscribed","subs","readyState","WebSocket","OPEN","subscribeTopic","connectSocket","unsubscribeTopic","clearTimer","disconnectSocket","uri","hostname","port","onopen","onclose","handleMessage","reconnect","close","topicId","arrayBuf","send","initServices","register","settingsService","authService","webSocketService","themeService","dashboardConfigService","metricsService","resubscribe","brandConfiguration"],"sourceRoot":""} \ No newline at end of file